Ответ 1
Это не правильный способ startActivity.
попробуйте использовать этот код:
Intent startIntent = new Intent(context, MainActivity.class);
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startIntent);
Я пытаюсь запустить основное действие внутри 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(имеет дополнительные функции)}
Любые идеи?
Это не правильный способ startActivity.
попробуйте использовать этот код:
Intent startIntent = new Intent(context, MainActivity.class);
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startIntent);
Копировать из другой темы:
Это работает с 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);
}
Даже я пытался запустить MainActivity через Activity Activity.
И это сработало для меня:
Intent startIntent = new Intent();
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startIntent.setPackage(getApplicationContext().getPackageName());
getApplicationContext().startActivity(startIntent);
Убедитесь, что вы добавили активность в манифест библиотеки!
Хотя уже слишком поздно. Может быть полезно для Сомоне в будущем. Это помогло мне.
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(intent);