Android打算启动应用程序的主要活动

Android打算启动应用程序的主要活动,android,android-intent,alarmmanager,Android,Android Intent,Alarmmanager,我试图从广播接收器内部开始主要活动。 我不想提供活动类名,但要使用android的action和category来确定主要活动 它似乎不起作用 发送代码: Intent startIntent = new Intent(); startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startIntent.setAction(Intent.ACTION_MAIN); startIntent.setPackage(context.getPackag

我试图从广播接收器内部开始主要活动。 我不想提供活动类名,但要使用android的action和category来确定主要活动

它似乎不起作用

发送代码:

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:未找到可处理意图的活动{ 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);

甚至我也一直试图通过图书馆活动来启动main活动

这对我很有用:

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

确保将活动添加到库的清单中

从另一个主题复制:

自API级别3(Android 1.5)起,这一功能就开始发挥作用:


即使已经太晚了。将来可能对somone有用。这对我有帮助

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

为什么不想按名称指定实际的主活动?@Austyn将使用库中的代码作为示例。在库项目中,我只有应用程序的上下文,而没有MainActivity.class。如何从库项目启动应用程序的主活动?@karchigh:使用应用程序上下文而不是MainActivity.class没有问题,但是-如果不使用Intent.FLAG\u activity\u NEW\u任务标志,则会出现异常,因为从应用程序/服务上下文启动活动需要此标志。如果我使用的是上下文方式,如何使用?意向通知意向=新意向(上下文,(活动)(PushNotification.mActiveContext));获取错误。在下面的链接场景中我需要这个@卡迪希:我看过你的问题,如果我现在理解的话-我提供了一个很好的答案,当我尝试同样的方法时,这里有一个例外:android.content.ActivityNotFoundException:找不到可以处理意图的活动这是一个比批准的答案好得多的答案
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(intent);