既然最新的Android SDK中不推荐使用setLatestEventInfo
方法,我们是否应该更新现有通知的内容?我怀疑他们希望我们每次想要更新通知内容时都会创建新通知。
Notification Guide似乎尚未更新,无法使用建议的Notification.Builder
课程。
答案 0 :(得分:2)
Notification类中有许多公共字段可以直接更改,只需保留对它的引用即可。它的其他特征显然不是为了改变(如果通知发生重大变化,可能会使用户感到困惑)。
您需要使用已弃用的方法,或重建通知并显示新的通知。
http://developer.android.com/reference/android/app/Notification.html
答案 1 :(得分:0)
是的,您可以更新现有通知的内容。但是您已经使用相同的通知ID重建它。同时删除所有相关标志并将优先级设置为默认值。
相同的通知ID可确保不会创建新的通知ID。通知已经启动,振动和灯光等标志可能不合适。优先级设置为默认值,以便通知托盘中通知的位置不会更改。如果优先级设置为高,则它将移动到托盘的顶部。
以下是我的实施方式。 *我刚刚添加了相关代码
public void showNotification(String action){
RemoteViews views = new RemoteViews(getPackageName(),
R.layout.status_bar);
Notification status;
if(action.equals("play")){
views.setImageViewResource(R.id.status_bar_play, R.drawable.play);
status = notificationBuilder
.setSmallIcon(R.drawable.ic_launcher)
.setPriority(Notification.PRIORITY_HIGH)
.setContentIntent(pendingIntent)
.setContent(views)
.setDefaults(Notification.DEFAULT_VIBRATE | Notification.DEFAULT_LIGHTS)
.build();
} else {
views.setImageViewResource(R.id.status_bar_play, R.drawable.pause);
status = notificationBuilder
.setSmallIcon(R.drawable.ic_launcher)
.setPriority(Notification.PRIORITY_DEFAULT)
.setContentIntent(pendingIntent)
.setContent(views)
.build();
}
NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(Constants.NOTIFICATION_ID, status);
}
这样可以修改现有通知的内容。