Мне нужно получить название активности запуска для запуска активности из моего приложения. Любое решение
Получить имя запуска приложения для андроида
Ответ 1
Используйте следующий код, чтобы получить активность запуска всех пакетов:
final PackageManager pm = getPackageManager();
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> appList = pm.queryIntentActivities(mainIntent, 0);
Collections.sort(appList, new ResolveInfo.DisplayNameComparator(pm));
for (ResolveInfo temp : appList) {
Log.v("my logs", "package and activity name = "
+ temp.activityInfo.packageName + " "
+ temp.activityInfo.name);
}
Ответ 2
поздно, но лучше всего это даст точное намерение запустить мероприятие
PackageManager pm = getPackageManager();
Intent intent=pm.getLaunchIntentForPackage(pacakgeName);
startActivity(intent);
Ответ 3
Несмотря на то, что ответы выше отвечают непосредственно на вопрос OP, я хотел бы добавить мои два цента:
/** Backwards compatible method that will clear all activities in the stack. */
public void startLauncherActivity(Context context) {
PackageManager packageManager = context.getPackageManager();
Intent intent = packageManager.getLaunchIntentForPackage(context.getPackageName());
ComponentName componentName = intent.getComponent();
Intent mainIntent = IntentCompat.makeRestartActivityTask(componentName);
context.startActivity(mainIntent);
}
Здесь я не только получаю активность запуска приложения, но и очищаю все стопы от действий (что мне действительно нужно, когда я запускал активность запуска). Я называю это в случае просроченного токена аутентификации, например.
Важно использовать IntentCompat
, иначе нужно прибегнуть к флагов Intent
Intent.FLAG_ACTIVITY_CLEAR_TASK
, который вводится только в API 11.