1. 程式人生 > >[轉」notification通過intent傳遞引數到activity

[轉」notification通過intent傳遞引數到activity

原文地址:

專案開發中遇到以下問題,需要在一個Activity中顯示不同的訊息型別,訊息通過notification觸發,程式碼如下:

Java程式碼  收藏程式碼
  1. Intent intent = new Intent(context,  
  2.         NotificationDetailsActivity.class);  
  3. intent.putExtra(PNConstants.NOTIFICATION_ID, notificationId);  
  4. intent.putExtra(PNConstants.NOTIFICATION_TITLE, title);  
  5. intent.putExtra(PNConstants.NOTIFICATION_MESSAGE, message);  
  6. intent.putExtra(PNConstants.NOTIFICATION_LOGIN_URI, loginUri);  
  7. intent.putExtra(PNConstants.NOTIFICATION_URI, uri);  
  8. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
  9. intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);  
  10. intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);  
  11. intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);  
  12. intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
  13. PendingIntent contentIntent = PendingIntent.getActivity(context, 0,  
  14.         intent, PendingIntent.FLAG_UPDATE_CURRENT);  
  15. notification.setLatestEventInfo(context, title, message,  
  16.         contentIntent);  
  17. notificationManager.notify(notificationId, notification);  

 如此,在接收多條不同型別的訊息後,開啟不同訊息,進入訊息詳細頁面NotificationDetailsActivity顯示的始終是最後一條訊息內容,而不是根據訊息型別分類顯示各分類的最後一條。

為解決此問題有兩種方法,但是沒有找到合理的解釋,先記錄如下,

方法1:為intent新增不同的Action

Java程式碼  收藏程式碼
  1. intent.setAction(""+System.currentTimeMillis());  

方法2:PendingIntent.getActivity的第二個引數設為訊息型別notificationId,

Java程式碼  收藏程式碼
  1. PendingIntent contentIntent = PendingIntent.getActivity(context, notificationId, intent, PendingIntent.FLAG_UPDATE_CURRENT);