android - NotificationManager 所需的权限

标签 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);

我一直收到安全错误

java.lang.RuntimeException: Unable to start receiver MyBroadcastReceiver: java.lang.SecurityException: Notification policy access denied

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

<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />

我是否缺少额外的权限?

最佳答案

似乎用户需要通过设置屏幕明确授予应用程序权限,以便应用程序通过通知 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);

希望这对您有所帮助。

关于android - NotificationManager 所需的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41308512/

相关文章:

java - 通过单击 PopUpWindow 上的按钮打开 Activity (Android Studio)

java - Android/Java WiFi 直接对端列表

Android:权限拒绝:需要 android.permission.INTERNET

android - Paypal 安全异常 : Requires READ_PHONE_STATE

android - 即使具有 READ_EXTERNAL_STORAGE 权限,getExternalFilesDir(null) 也会返回 null

java - 使用 android 获取当前位置的代码中出现奇怪的错误

java - 不能在 2 个数组列表上使用 equal

android - 使用新别名复制私钥

android - AMQP + 安卓库

java - 即使我声明了 Android 权限也不起作用