Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 删除天文钟(KitKat)的更新通知_Android_Android Notifications - Fatal编程技术网

Android 删除天文钟(KitKat)的更新通知

Android 删除天文钟(KitKat)的更新通知,android,android-notifications,Android,Android Notifications,我需要显示通知并在其生命周期内更新它。特别是,我需要更改某些标志,例如“show chronometer”。为此,文档说明我们应该使用相同的id调用NotificationManager.notify() 因此,我们的想法是采用以下方法: private void showInitialNotification() { NotificationCompat.Builder builder = new NotificationCompat.Builder(this); ...

我需要显示通知并在其生命周期内更新它。特别是,我需要更改某些标志,例如“show chronometer”。为此,文档说明我们应该使用相同的id调用
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()
时再次触发任何铃声等,因此这可能比您当前的情况更糟。