更新通知以删除天文台(KitKat)

时间:2016-04-19 22:04:48

标签: android android-notifications

我需要显示通知并在其生命周期内更新它。特别是,我需要更改某些标志,例如“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());
}

这在Android 5.1和6.0中完全正常,但在Android 4.4中 (以下,我猜?)计时器未删除,虽然内容标题,文字,图标和c都正确更新。

知道为什么吗?

我不能使用相同的Notification.Builder对象(例如this answer中建议的那样),因为我还需要更新通知中可用的操作,并且无法将以前添加的操作删除到助洗剂。

我的用例有点复杂(它是一个媒体播放器),但这是我能够重现的错误的最小例子。例如,它也存在于Google的UniversalMusicPlayer样本中 - 在Lollipop中可以正常工作,但在KitKat中则不行。

FWIW,完整的示例代码为here

0 个答案:

没有答案