语境:
我一直在使用谷歌的LocationUpdatesForegroundService示例项目来学习更多关于服务的知识。
我已经通过Github桌面下载了该项目,并在我的手机上运行,一切都很棒,项目完成了它的目的。
我的手机是Android 8.0.0,API 26
问题:
一旦应用程序终止,前台服务通知就会显示在状态栏上,一旦发生这种情况,我就会听到通知声音(默认声音)。但是,我希望通知保持沉默,就像在某些基于位置的应用程序中一样(例如:Life360)
到目前为止我尝试过的:
159
尝试了mChannel.setSound(null,null);
296
改变.setPriority(Notification.PRIORITY_HIGH)
到.setPriority(Notification.PRIORITY_LOW)
158
changed NotificationManager.IMPORTANCE_DEFAULT
到NotificationManager.IMPORTANCE_LOW)
300
添加了setSound(null)
以上都没有对我有用,如果有人能对这种情况有所了解,我真的很感激。
解决方案是使用NotificationManager.IMPORTANCE_LOW并为其创建新通道。创建频道后,您无法更改重要性(嗯,您可以,但忽略新的重要性)。频道信息似乎由系统永久存储,并且只有在您卸载应用程序时才会删除创建的任何频道。您可以将频道删除为
nm.deleteNotificationChannel(nChannel.getId());
并重新创建它
nm.createNotificationChannel(nChannel);
通过堆栈溢出回答这里Disable sound from NotificationChannel
mChannel.setSound(null,null)将执行此操作,但您需要卸载/重新安装该应用程序才能使其生效。或者将CHANNEL_ID更改为其他值也将重新创建具有更新设置的频道。