[轉」notification通過intent傳遞引數到activity
阿新 • • 發佈:2019-01-24
原文地址:
專案開發中遇到以下問題,需要在一個Activity中顯示不同的訊息型別,訊息通過notification觸發,程式碼如下:
Java程式碼- Intent intent = new Intent(context,
- NotificationDetailsActivity.class);
- intent.putExtra(PNConstants.NOTIFICATION_ID, notificationId);
- intent.putExtra(PNConstants.NOTIFICATION_TITLE, title);
-
intent.putExtra(PNConstants.NOTIFICATION_MESSAGE, message);
- intent.putExtra(PNConstants.NOTIFICATION_LOGIN_URI, loginUri);
- intent.putExtra(PNConstants.NOTIFICATION_URI, uri);
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
- intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
-
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
- intent, PendingIntent.FLAG_UPDATE_CURRENT);
- notification.setLatestEventInfo(context, title, message,
- contentIntent);
-
notificationManager.notify(notificationId, notification);
如此,在接收多條不同型別的訊息後,開啟不同訊息,進入訊息詳細頁面NotificationDetailsActivity顯示的始終是最後一條訊息內容,而不是根據訊息型別分類顯示各分類的最後一條。
為解決此問題有兩種方法,但是沒有找到合理的解釋,先記錄如下,
方法1:為intent新增不同的Action
Java程式碼- intent.setAction(""+System.currentTimeMillis());
方法2:PendingIntent.getActivity的第二個引數設為訊息型別notificationId,
Java程式碼- PendingIntent contentIntent = PendingIntent.getActivity(context, notificationId, intent, PendingIntent.FLAG_UPDATE_CURRENT);