Android 删除天文钟(KitKat)的更新通知
我需要显示通知并在其生命周期内更新它。特别是,我需要更改某些标志,例如“show chronometer”。为此,文档说明我们应该使用相同的id调用Android 删除天文钟(KitKat)的更新通知,android,android-notifications,Android,Android Notifications,我需要显示通知并在其生命周期内更新它。特别是,我需要更改某些标志,例如“show chronometer”。为此,文档说明我们应该使用相同的id调用NotificationManager.notify() 因此,我们的想法是采用以下方法: private void showInitialNotification() { NotificationCompat.Builder builder = new NotificationCompat.Builder(this); ...
NotificationManager.notify()
因此,我们的想法是采用以下方法:
private void showInitialNotification() {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
...
mNotificationManager.notify(NOTIFICATION_ID, builder.build());
}
private void addChronometerFlag() {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
...
builder.setUsesChronometer(true);
mNotificationManager.notify(NOTIFICATION_ID, builder.build());
}
private void removeChronometerFlag() {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
...
builder.setUsesChronometer(false);
mNotificationManager.notify(NOTIFICATION_ID, builder.build());
}
这在安卓5.1和6.0中运行正常,但在安卓4.4中(我猜是在4.4及以下版本中?)虽然内容标题、文本、图标和c已正确更新,但计时器并未删除
知道为什么吗
我不能使用相同的Notification.Builder
对象(例如中建议的对象),因为我还需要更新通知中可用的操作,并且无法删除先前添加到生成器中的操作
我的用例有点复杂(它是一个媒体播放器),但这是我能够重现的bug的最小示例。例如,它也出现在谷歌的示例中——在棒棒糖中效果很好,但在KitKat中效果不好
FWIW,完整的示例代码是。看看由构建者构建的
通知。查看extras
捆绑包中的内容。那里应该有一个额外的\u SHOW\u天文钟
布尔值。查看它是否与您的setUsesChronometer()
value.Hi@commonware一致-我已经检查了构建器返回的通知对象,并且附加值正常(即android.showcronometer
视情况而定为true或false)。但是它工作不正常,不知道为什么。接下来,尝试将通知管理器Compat
替换为通知管理器
。如果问题仍然存在,那么问题可能存在于系统中,您对此无能为力。如果问题消失了,您将在NotificationManagerCompat
@commonware中遇到一个bug,不幸的是,这没有什么区别;看起来这确实是一个平台错误。我只需要避免在棒棒糖前设置这些标志。。。感谢您的帮助。根据您的使用情况,您可能可以首先cancel()
现有的通知。这将在您notify()
时再次触发任何铃声等,因此这可能比您当前的情况更糟。