0

我一直試圖使用WakefulBroadcastReceiver創建一個警報應用程序,該應用程序啓動啓動SecondActivity(警報設置在MainActivity中)的喚醒服務(IntentService)。但是,我一直無法弄清楚如何將數據從MainActivity傳遞到SecondActivity,即使使用Intents。這是設置報警代碼:將數據傳遞到由服務啓動的活動

Intent intent = new Intent(MainActivity.this, AlarmReceiver.class); 
intent.putExtra("requestCode", 111); 
pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 111, intent, 0); 
alarmManager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, alarm.getTimeInMillis(), pendingIntent); 

在AlarmReceiver爲onReceive代碼:

Intent service = new Intent(context, AlarmService.class); 
intent.putExtra("requestCode", intent.getIntExtra("requestCode", 222)); 
startWakefulService(context, service); 

在AlarmService爲onHandleIntent代碼:

Context context = getApplicationContext(); 
Intent intent = new Intent(context, SecondActivity.class); 
intent.putExtra("requestCode", intent.getIntExtra("requestCode", 333)); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
context.startActivity(intent); 

最後,在SecondActivity的onCreate ,我有以下代碼:

Intent intent = getIntent(); 
Log.i("APP", "requestCode: " + intent.getIntExtra("requestCode", 444)); 

輸出爲requestCode: 333,這是AlarmService的onHandleIntent(而不是傳遞的原始請求代碼,即111)中的默認/故障安全值。我錯過了什麼?

編輯:onReceive的代碼應該是:

Intent service = new Intent(context, AlarmService.class); 
service.putExtra("requestCode", intent.getIntExtra("requestCode", 222)); 
startWakefulService(context, service); 

而且能解決問題。

回答

0
Intent intent = new Intent(context, SecondActivity.class); 
intent.putExtra("requestCode", intent.getIntExtra("requestCode", 333)); 

你命名你的意圖一樣的一個你的服務你引用不老的一個第二線接收,所以,但新的 - 你是一個試圖初始化 - 這個還沒有這個額外的,所以它解析爲默認值。更改爲:

Intent activityIntent = new Intent(context, SecondActivity.class); // or any other name different than 'intent' 
activityIntent.putExtra("requestCode", intent.getIntExtra("requestCode", 333)); 

除此之外,您的代碼看起來沒問題。

+0

實際上,我發現我犯了一個非常愚蠢的錯誤 - 我在'onReceive'中寫了'intent.putExtra'而不是'service.putExtra',並且解決了這個問題。我會改變你指出的部分,只是爲了確保! – Technicolor

相關問題