Подтвердить что ты не робот

Получить имя запуска приложения для андроида

Мне нужно получить название активности запуска для запуска активности из моего приложения. Любое решение

4b9b3361

Ответ 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.