我正在使用以下代码创建通知:
Intent intent = new Intent(this, GetStockQuote.class);
intent.putExtra("abc", abcObject);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);
/* Build the notification */
Notification notification = new Notification.Builder(this)
.setContentTitle(abcObject.getCode())
.setContentText(abcObject.getText())
.setAutoCancel(false)
.setSmallIcon(R.drawable.ic_launcher)
.setContentIntent(pIntent).build();
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(notificationID,notification);
Log.i(TAG,"notification.notified");
正如您所看到的,附加在通知上的PendingIntent
携带着有效载荷。它是一个自定义类的对象。
现在我要在服务中更新通知。我知道如果要更新通知(而不是创建新通知),必须指定相同的notificationID
,我正在这样做。
以下是用于更新上面创建的通知的服务中的代码:
Intent intent = new Intent(this, GetStockQuote.class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);
Notification notification=new Notification.Builder(this)
.setContentTitle(newTitle)
.setContentText(newBody)
.setSmallIcon(R.drawable.ic_launcher)
.setContentIntent(pIntent)
.build();
/*Get instance of Notification Manager and show the notification*/
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(notificationID,notification);
该代码更新现有的通知内容,但PendingIntent
不包含有效载荷。
在服务中,我无法访问有效载荷。因此,我想仅使用其新的textContent
更新通知服务,而不影响在创建期间设置的有效载荷。
现在的问题是,我有许多这样的通知。它们每个都有一个唯一的有效负载,但是Intent
中的目标类保持不变。
是否有一种方法可以在更新通知时保留有效载荷?