2011-01-29 44 views
5

我廣播的意圖,將由廣播接收器接收,因爲應用程序仍在運行,並且新的意圖由警報服務觸發但接收器顯示以前的意圖值。根據文檔廣播接收器在返回onReceive()後不再處於活動狀態,因此接收者應該顯示接下來的由警報服務觸發的intent值,但它不會發生,任何人都可以告訴正確的方法。發送新的意圖廣播接收器給出額外的價值從以前的意圖

這是從活動廣播意圖:

Intent intent = new Intent(SCH_ALARM_ACTION); 
    intent.setClass(getBaseContext(), SchAlarmReciever.class); 
    intent.putExtra("id", maxId); 
    PendingIntent pi = PendingIntent.getBroadcast(getBaseContext(), 
       0, 
       intent, 
       0); 
    alarmManager.set(AlarmManager.RTC, gc.getTimeInMillis(), pi); 

這是broadreceiver:

@Override 
    public void onReceive(Context context, Intent data) 
       { 
     // TODO Auto-generated method stub 

     if(data.getAction().equals(SchedulerActivity.SCH_ALARM_ACTION)){ 

     int id = data.getIntExtra("id",0); 
     Toast.makeText(context, "in receiver "+String.valueOf(id), Toast.LENGTH_LONG).show(); 
       } 

這裏舉杯表示由第一廣播發送從alarmservice即使第二意圖從alarmservice發射ID (第二次警報熄滅)

+0

你能發佈一個代碼片段嗎? – 2011-01-29 12:34:05

+0

我在做類似的事情! http://stackoverflow.com/questions/14571564/android-pendingintent-extras-not-received-by-broadcastreceiver/14612215#14612215 – toobsco42 2013-01-31 07:46:41

回答

4

得到答案,必須設置標誌PendingIntent.FLAG_CANCEL_CURRENT,同時設置AlarmService的掛起意圖...