上下文:
我一直在使用Google的LocationUpdatesForegroundService示例项目来了解有关服务的更多信息。
我已经通过Github桌面下载了该项目并在手机上运行,一切都很好,并且该项目可以完成预期的工作。
我的手机是Android 8.0.0,API 26
问题:
应用终止后,前台服务通知就会显示在状态栏上,这时我会听到通知声音(默认声音)。 但是,我希望该通知保持沉默,例如在某些基于位置的应用中(例如:Life360)
到目前为止,我已经尝试过:
159
,尝试了mChannel.setSound(null,null);
296
行的LocationUpdatesService.java中的.setPriority(Notification.PRIORITY_HIGH)
到
.setPriority(Notification.PRIORITY_LOW)
158
行的LocationUpdatesService.java中NotificationManager.IMPORTANCE_DEFAULT
更改为NotificationManager.IMPORTANCE_LOW)
300
行的LocationUpdatesService.java中的setSound(null)
以上都不是我的工作,如果有人能对这种情况有所了解,我将不胜感激。
答案 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)
我的回答可能有点晚了,但是您是否尝试重新安装该应用程序?这很简单,可能会解决问题。