Android Intent启动应用程序的主要活动

时间:2012-06-14 20:25:50

标签: android android-intent alarmmanager

我正在尝试从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的Activity {   act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER]   flg = 0x10000000 pkg = com.xyz.abc(有额外内容)}

有什么想法吗?

4 个答案:

答案 0 :(得分:13)

从其他主题复制:

这适用于API Level 3(Android 1.5):

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

答案 1 :(得分:8)

这不是startActivity的正确方法 请尝试使用此代码:

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

答案 2 :(得分:1)

即使我一直试图通过库Activity启动MainActivity。

这对我有用:

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

确保在图书馆的清单中添加活动!

答案 3 :(得分:0)

即使为时已晚。将来可能会有用。这对我有帮助。

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