Android намерение начать Основное действие приложения

Я пытаюсь запустить основное действие внутри BroadcastReceiver. Я не хочу указывать имя класса активности, но использовать действие и категорию для android для определения основной активности.

Кажется, он не работает.

Отправляющий код:

Intent startIntent = new Intent();

startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startIntent.setAction(Intent.ACTION_MAIN);
startIntent.setPackage(context.getPackageName());
startIntent.addCategory(Intent.CATEGORY_LAUNCHER);        
context.startActivity(startIntent);

Я получаю эту ошибку:

Причиненный bt: android.content.ActivityNotFoundException: Активность не обнаружена для обработки Intent { act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] flg = 0x10000000 pkg = com.xyz.abc(имеет дополнительные функции)}

Любые идеи?

Ответ 1

Это не правильный способ startActivity.
попробуйте использовать этот код:

Intent startIntent = new Intent(context, MainActivity.class);
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        
context.startActivity(startIntent);

Ответ 2

Копировать из другой темы:

Это работает с API уровня 3 (Android 1.5):

private void startMainActivity(Context context) throws NameNotFoundException {
    PackageManager pm = context.getPackageManager();
    Intent intent = pm.getLaunchIntentForPackage(context.getPackageName());
    context.startActivity(intent);
}

Ответ 3

Даже я пытался запустить MainActivity через Activity Activity.

И это сработало для меня:

Intent startIntent = new Intent();
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startIntent.setPackage(getApplicationContext().getPackageName());
getApplicationContext().startActivity(startIntent);

Убедитесь, что вы добавили активность в манифест библиотеки!

Ответ 4

Хотя уже слишком поздно. Может быть полезно для Сомоне в будущем. Это помогло мне.

Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(intent);