2015-12-24 100 views
0

我還有一個問題。我對如何從BroadcastReceiver正確發送一個意圖到一個活動做了一些研究。大家建議做以下事情:從BroadcastReceiver發送意圖到活動

構建意圖並使用接收器中提供的上下文來啓動該意圖。但是,試圖這樣做說

AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 

所以,當我用Google搜索有關該錯誤時,我總是會得到一個錯誤,人們似乎認爲要具體標誌添加到意圖。但即使這個標誌出現,我也遇到了同樣的錯誤。任何幫助將被讚賞。

Intent intentMain = new Intent(context.getApplicationContext(), MainActivity.class); 
intentMain.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
intentMain.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
intent.putExtra("com.hennessylabs.xxx.FROM", senderNum); 
intent.putExtra("com.hennessylabs.xxx.MSG", message); 
context.startActivity(intentMain); 

回答

1

它看起來像您嘗試啓動來自您的BroadcastReceiver的MainActivity.class。沒事兒。雖然我不明白爲什麼你在添加標誌時提供了第2行和第3行的功能。你爲什麼不只是這樣做:

intentMain.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

所以你的整個代碼塊應該是這樣的:

Intent intentMain = new Intent(context.getApplicationContext(), MainActivity.class); 
intentMain.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.putExtra("com.hennessylabs.xxx.FROM", senderNum); 
intent.putExtra("com.hennessylabs.xxx.MSG", message); 
context.startActivity(intentMain); 
1
Intent intent = new Intent(context,MainActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
context.startActivity(intent); 

,然後在清單文件 在mainactivity

launchmode= singleTask 

或按您的要求,您可以使用一些其他的組合也

相關問題