16

我正在尝试从 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: No Activity found to handle Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.xyz.abc (有附加功能) }

有任何想法吗?

4

4 回答 4

24

从另一个主题复制:

这适用于 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);
}
于 2015-09-21T12:37:51.257 回答
9

这不是 startActivity 的正确方法。
试试这个代码:

Intent startIntent = new Intent(context, MainActivity.class);
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        
context.startActivity(startIntent);
于 2012-06-14T20:37:10.013 回答
1

甚至我一直在尝试通过库 Activity 启动 MainActivity。

这对我有用:

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

确保在库的清单中添加活动!

于 2014-06-04T06:17:51.137 回答
0

尽管为时已晚。将来可能对某人有用。这对我有帮助。

Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(intent);
于 2019-08-20T12:32:59.740 回答