通知管理器所需的权限

jra*_*234 4 android android-permissions

我正在尝试使用以下命令将振铃器设置为静音且请勿打扰优先级

AudioManager myAudioMgr = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
NotificationManager myNOtificationMgr = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

myAudioMgr.setRingerMode(AudioManager.RINGER_MODE_SILENT);
myNOtificationMgr.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_PRIORITY);
Run Code Online (Sandbox Code Playgroud)

我不断收到安全错误

java.lang.RuntimeException:无法启动接收器 MyBroadcastReceiver:java.lang.SecurityException:通知策略访问被拒绝

我已将访问通知策略权限添加到我的清单文件中

<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
Run Code Online (Sandbox Code Playgroud)

我是否缺少额外的权限?

use*_*882 5

似乎用户需要通过设置屏幕明确授予应用程序权限,以便应用程序通过通知 api 操纵优先级/静音。我假设您为此使用 notificationManager 类。一些可能对您有帮助的链接:

https://developer.android.com/reference/android/provider/Settings.html#ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS

https://developer.android.com/reference/android/app/NotificationManager.html#ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED

我认为本质上您需要做的是将用户引导至“显示请勿打扰访问设置”并让他启用通知管理选项(例如,与您对模拟位置执行的操作类似)

示例代码:

startActivityForResult(new Intent(android.settings.NOTIFICATION_POLICY_ACCESS_SETTINGS), 0);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。