Android Lollipop 中的另一个通知正在取消通知

Posted

技术标签:

【中文标题】Android Lollipop 中的另一个通知正在取消通知【英文标题】:Notification being cancelled by another one in Android Lollipop 【发布时间】:2015-10-28 20:28:47 【问题描述】:

我以这种方式在 Service 中创建通知(从 BroadcastReceiver 启动):

this.notification = new NotificationCompat.Builder(getApplicationContext())
    .setContentTitle("Foo")
    .setContentText("Bar")
    .setSmallIcon(R.drawable.logo)
    .setContentIntent(pIntent)
    .build();
this.initializeNotificationSound(volumne, Uri.parse(melody));
this.initializeNotificationVibration();

notification.flags = Notification.FLAG_INSISTENT;
this.notificationManager.cancelAll();
this.notificationManager.notify(0, notification);

收到特定短信时设置此通知。我想创建一个通知,它将播放定义的旋律并且不会被标准 SMS 通知打断。

这个功能效果很好,但是在棒棒糖中,会发生以下情况:

    收到短信 我的通知已启动 一段时间后,通知声音停止并播放默认短信铃声

仅当铃声模式为静音时才会发生这种情况。否则,它会按预期工作,因为 cancelAll() 方法会中断 SMS 通知。

提前感谢您的回复。

【问题讨论】:

【参考方案1】:

你无法改变这一点。如果您注意到,当同时创建多个通知时,即使是来自单个应用程序(例如 Facebook),它们发出的声音也会同时播放。这与android系统本身的通知管理有关。也许您面临的问题是由于对特定 Android 系统版本(API 级别)进行了一些代码更改,可能是 cancelAll() 方法。一种解决方案是找到合适的代码行来检查当前系统版本。例如:

if(System_version <= lollipop) 
//code works fine. Keep as it is

else
//find the appropriate method and call it here.

【讨论】:

我将不胜感激以下之一: 1:仅在我取消我的之后从“堆栈”运行另一个通知。 2. 在另一个(打断我的)完成后,再次启动我的通知。 1:尝试搜索documentation,并找到适合您使用的标志。 2:尝试 1 并告诉我它是否有效

以上是关于Android Lollipop 中的另一个通知正在取消通知的主要内容,如果未能解决你的问题,请参考以下文章

Android 推送通知服务未在 Lollipop 上启动

Android推送通知服务无法在Lollipop上启动

Google GCM - 未在 android Lollipop 中接收推送通知

Android 5.0 Lollipop 中的 ActionMode ActionBar 样式(带有 AppCompat)

Lollipop上方的推送通知图标为白色[重复]

使用 Material Design 在 Android Lollipop 中的 ListView 中的活动转换动画