我需要从代码中禁用第三方应用程序通知的所有声音。
像这样:当应用程序打开时 - 来自所有应用程序的所有通知都是静默的。当应用程序关闭时 - 声音设置将恢复到以前的状态。
如何实施?可以这样做吗?
似乎音频管理器就是您正在寻找的。
您可以像这样访问它(在本例中在活动中调用(:
val audioManager: AudioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
要获取当前卷(以便以后可以还原它(,请使用
audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION)
当应用启动时,您可以通过调用
对于 SDK <23:
audioManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 0, 0)
对于 SDK>= 23:
audioManager.adjustStreamVolume(AudioManager.STREAM_NOTIFICATION, AudioManager.ADJUST_MUTE, 0)
根据官方文档的说明:
从 N 开始,将切换"请勿打扰"的音量调整是 除非应用程序已被授予"请勿打扰"访问权限,否则不允许。
如前所述,此答案需要声明ACCESS_NOTIFICATION_POLICY
并主动请求访问权限。