2016-01-07 68 views
0

我一直在玩弄如何從我的BroadcastReceiver在我的主類中啓動新的意圖。謝天謝地,經過多次嘗試和從SO的幫助我成功地觸發了onNewIntent()。但是,我需要將數據傳遞給意圖,以便我可以使用它。下面你會看到我的BroadcastReceiver中的代碼啓動了intent和處理我的主類的意圖的代碼。預期的結果是打印出來的BroadcastReceiver傳遞的值,而不是,我得到一個空例外。我已經放置了一個斷點,並且可以驗證intent和getIntent(應該是最初的意圖,而不是從BroadcastReceiver傳入的意圖)是否具有空的額外值。任何幫助都會被處理。從BroadcastReceiver getExtras開始活動爲空

廣播接收器:

Intent intentMain = new Intent(context.getApplicationContext(), MainActivity.class); 
intentMain.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
intent.putExtra("com.xxx.xxx.FROM", "test"); 
intent.putExtra("com.xxx.xxx.MSG", "test2"); 
context.startActivity(intentMain); 

onNewIntent():

@Override 
    protected void onNewIntent(Intent intent) { 
     Log.d("SmsReceiver", "entered onNewIntent"); 
     super.onNewIntent(intent); 
     if (intent.getExtras() != null) { 
      String from = intent.getExtras().getString("com.xxx.xxx.FROM"); 
      String msg = intent.getExtras().getString("com.xxx.xxx.MSG"); 
     } 
    } 
+0

您的意圖傳遞給'onNewIntent'爲null,請顯示您的錯誤代碼。 – starkshang

+2

您創建'intentMain',但額外添加了'intent.putExtra(「com.xxx.xxx.MSG」,「test2」);',爲什麼有'intentMain'和'intent'? – starkshang

+0

謝謝你的評論,我不能相信我錯過了(這就是你盯着你的代碼幾周哈哈)。它似乎按預期工作,非常感謝你。如果你們中的任何一方希望把你的評論作爲答案,我會很樂意接受它。 – Kyle

回答

1

創建intentMain,而是把多餘的與intent.putExtra("com.xxx.xxx.MSG", "test2");應該 intentMain.putExtra("com.xxx.xxx.MSG", "test2");