Java 更新现有通知

Java 更新现有通知,java,android,Java,Android,既然最新的Android SDK中已经不推荐使用该方法,那么我们有没有办法更新现有通知的内容?我怀疑他们希望我们在每次更新通知内容时都创建一个新的通知 似乎也没有更新以使用建议的类。通知类上有许多公共字段,您可以直接更改,只需保留对它的引用即可。它的其他特性显然不是为了改变而设计的(如果通知发生了实质性的改变,可能会让用户感到困惑) 您需要使用不推荐的方法,或者重新生成通知并显示新的通知 是,您可以更新现有通知的内容。但您必须以相同的通知id以类似的方式重新生成它。还要删除所有相关标志并将优先级

既然最新的Android SDK中已经不推荐使用该方法,那么我们有没有办法更新现有通知的内容?我怀疑他们希望我们在每次更新通知内容时都创建一个新的通知


似乎也没有更新以使用建议的类。

通知类上有许多公共字段,您可以直接更改,只需保留对它的引用即可。它的其他特性显然不是为了改变而设计的(如果通知发生了实质性的改变,可能会让用户感到困惑)

您需要使用不推荐的方法,或者重新生成通知并显示新的通知


是,您可以更新现有通知的内容。但您必须以相同的通知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);
}
这样可以修改现有通知的内容