上下文:
我一直在使用 Google 的 LocationUpdatesForegroundService示例项目以更多地了解服务。
我已经通过 Github 桌面下载了该项目并在我的手机上运行了它,一切都很好,该项目实现了它的预期目标。
我的手机是 Android 8.0.0,API 26
问题:
一旦应用程序终止,前台服务通知就会显示在状态栏上,一旦发生这种情况,我就会听到通知声音(默认声音)。 但是,我希望通知保持静音,就像在某些基于位置的应用程序中一样(例如:Life360)
到目前为止我尝试了什么:
- 在LocationUpdatesService.java在添加的
159
尝试了mChannel.setSound(null,null);
- 在LocationUpdatesService.java在
296
行将.setPriority(Notification.PRIORITY_HIGH)
更改为.setPriority(Notification.PRIORITY_LOW)
- 在LocationUpdatesService.java在
158
行将NotificationManager.IMPORTANCE_DEFAULT
更改为NotificationManager.IMPORTANCE_LOW)
- 在LocationUpdatesService.java在
300
行添加了setSound(null)
以上都不适合我,如果有人能阐明这种情况,我将不胜感激。
最佳答案
解决方案是使用 NotificationManager.IMPORTANCE_LOW 并为其创建一个新 channel 。创建 channel 后,您无法更改重要性(好吧,您可以,但新的重要性将被忽略)。 channel 信息似乎由系统永久存储,并且创建的任何 channel 仅在您卸载应用程序时才会被删除。您可以将 channel 删除为
nm.deleteNotificationChannel(nChannel.getId());
并用
重新创建它nm.createNotificationChannel(nChannel);
通过此处的堆栈溢出答案 Disable sound from NotificationChannel
关于java - 带有静默通知的前台服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54728368/