2013-07-24 111 views
-1

我想从我的广播接收器开始多个活动。我有两个类,即ReadContacts和CallDetails。我想一个接一个地开始。像第一个calldetails活动应该开始,然后下一个。我已经尝试了下面的代码,它工作正常。从broadcastReceiver开始multilple活动

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); 

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

回答

0

我认为你在这行犯错误

calldetails.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK) 

如果你想开始readcontacts活性,建议立即进行删除是

readcontacts.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

,而不是

calldetails.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 

我认为这是原因。

1

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

从Android开发者文档intent

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

2

您必须具有Intent FlagIntent.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); 
+0

请详细说明。 –

+0

或任何代码片段 –

+0

我编辑了我的答案 – codeMagic