从broadcastReceiver启动多个活动

时间:2013-07-24 16:37:42

标签: android android-broadcast

我想从我的广播接收器开始多项活动。我有两个类,即ReadContacts和CallDetails。我想一个接一个地开始。比如第一个calldetails活动应该开始然后下一个。我试过下面的代码,它工作正常。

Intent calldetails = new Intent();
calldetails.setClassName("com.simplereader", "com.simplereader.Calldetails");
calldetails.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(calldetails);

然后我尝试在代码下面开始其他活动

Intent readcontacts = new Intent(); 
readcontacts.setClassName("com.simplereader", "com.simplereader.ReadContacts");
calldetails.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
context.startActivity(readcontacts);

但它没有工作和应用程序崩溃。

3 个答案:

答案 0 :(得分:2)

您必须让Intent Flag Intent.FLAG_ACTIVITY_NEW_TASK从“活动”上下文之外启动Activity,因此您需要将该标记添加到第二个Intent

我不知道这是否是您唯一的问题,但如果不能解决问题,请发布您的logcat,以便我们看到错误。

Intent readcontacts = new Intent(); 
readcontacts.setClassName("com.simplereader", "com.simplereader.ReadContacts");
calldetails.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    // you need this flag
context.startActivity(readcontacts);

答案 1 :(得分:1)

  

FLAG_ACTIVITY_MULTIPLE_TASK除非您要实现自己的顶级应用程序启动器,否则不要使用此标志。

来自intent的android开发者文档。

您可能只需使用新任务标志启动这两个活动。

答案 2 :(得分:0)

我认为你在这一行中犯了错误

calldetails.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK)

如果你想开始readcontacts活动,那就是

readcontacts.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

而不是

calldetails.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);

我认为这就是原因。