2016-11-23 37 views
1

我使用newIntent傳遞正確的taskid點擊我的應用程序的通知時。這裏面的onReceive)我的廣播接收機的代碼(:通知的onclick意向發送錯誤的數據到活動

Intent newIntent = new Intent(context, TaskActivity.class); 
    int taskId = intent.getIntExtra("taskId", 0); 
    newIntent.putExtra("taskId", intent.getIntExtra("taskId", 0)); 

     Notification notification = new NotificationCompat.Builder(context) 
        .setContentTitle(intent.getStringExtra("NotificationTitle")) 
        .setContentText(intent.getStringExtra("NotificationText")) 
        .setSmallIcon(intent.getIntExtra("NotificationIcon", 0)) 
        .setContentIntent(PendingIntent.getActivity(context, 0, newIntent, 0)) 
        .build(); 

這是接收意圖

if (getIntent().hasExtra("taskId")) { 
     currentTask = dataSource.fetchTask(getIntent().getIntExtra("taskId", 0)); 
    } 

當調試,該方法getIntExtra()返回一個不同的活動的代碼值比廣播接收機的onReceive()中的值更高。

任何想法,爲什麼會發生這種情況?

謝謝!

+0

我建議你交叉(0 「的TaskID」,)檢查這行代碼'INT的TaskID = intent.getIntExtra;'通過印刷的TaskID的值。從哪裏得到這個價值? – AADProgramming

+0

該值來自所在的onReceive的參數傳遞的意圖()。在那之前,我用關鍵的「taskId」設置了一個警報器。我已經印刷的價值,這正是問題: 當我把它傳遞給報警管理它是由廣播接收器接收到相同的。但是,由通知的點擊意圖啓動的活動會收到錯誤的值。 – user5102612

回答

0

當您創建的Notification,而不是這樣的:

.setContentIntent(PendingIntent.getActivity(context, 0, newIntent, 0)) 

這樣做:

.setContentIntent(PendingIntent.getActivity(context, 0, newIntent, PendingIntent.FLAG_UPDATE_CURRENT)) 

您的問題是要在同一PendingIntent多次重複使用。您需要確保該「額外」的PendingIntent在每次使用一次更新。

注意:如果您同時有多個Notification s,則需要確保爲每個產品創建了唯一的PendingIntent s。要做到這一點,請確保requestCode參數(在PendingIntent.getActivity()秒參數)是每個Notification(你可以,例如,用你的taskId作爲一個獨特的requestCode)不同。