静默通知的前台服务

时间:2019-02-16 22:38:32

标签: java android notifications foreground-service

上下文:

我一直在使用Google的LocationUpdatesForegroundService示例项目来了解有关服务的更多信息。

我已经通过Github桌面下载了该项目并在手机上运行,​​一切都很好,并且该项目可以完成预期的工作。

我的手机是Android 8.0.0,API 26

问题:

应用终止后,前台服务通知就会显示在状态栏上,这时我会听到通知声音(默认声音)。 但是,我希望该通知保持沉默,例如在某些基于位置的应用中(例如:Life360

到目前为止,我已经尝试过:

以上都不是我的工作,如果有人能对这种情况有所了解,我将不胜感激。

4 个答案:

答案 0 :(得分:1)

在LocationUpdatesForegroundService中,当该服务处于onUnbind状态时,它将调用“ startForeground(NOTIFICATION_ID,getNotification())”,然后该通知将显示声音。因此,您需要按照以下代码更改NotificationChannel

mChannel.setSound(null, null);
mChannel.setImportance(NotificationManager.IMPORTANCE_LOW);

答案 1 :(得分:0)

mChannel.setSound(null,null)将执行此操作,但是您需要卸载/重新安装该应用程序才能使其生效。或者将CHANNEL_ID更改为其他值也将重新创建具有更新设置的频道。

答案 2 :(得分:0)

解决方案是使用NotificationManager.IMPORTANCE_LOW并为其创建一个新通道。创建频道后,您将无法更改重要性(可以,但是可以忽略新的重要性)。频道信息似乎已由系统永久存储,并且仅在卸载应用程序时删除创建的任何频道。您可以将频道删除为

nm.deleteNotificationChannel(nChannel.getId());

并使用

重新创建
nm.createNotificationChannel(nChannel);

通过堆栈溢出的答案在此处Disable sound from NotificationChannel

答案 3 :(得分:0)

我的回答可能有点晚了,但是您是否尝试重新安装该应用程序?这很简单,可能会解决问题。