权限需要NotificationManager
我想设置的铃声为静音,使用以下权限需要NotificationManager
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:无法启动接收器MyBroadcastReceiver:java.lang.SecurityException:通知策略访问被拒绝
我已经添加了Access通知我的清单文件的政策许可
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
我是否缺少额外的权限?
好像用户需要明确地授予通过设置屏幕到App,以使应用程序来操作的优先级/通过通知API无声的权限。我假设你正在使用notificationManager类。一些链接,可以帮助你:
我觉得本质上,你需要做的是将用户引导到“显示请勿打扰访问设置”,让他启用选项通知管理(有什么什么,你会为模拟位置例如做类似)
示例代码:
startActivityForResult(new Intent(android.settings.NOTIFICATION_POLICY_ACCESS_SETTINGS), 0);
希望这会有所帮助。
确切的问题!感谢您的帮助! – jradich1234
你需要做的是这样
public class SomeFragment extends FragmentCompat {
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
int permissionNotifications = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission. ACCESS_NOTIFICATION_POLICY);
if (permissionNotifications != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
getActivity(),
new String[] { Manifest.permission.ACCESS_NOTIFICATION_POLICY },
PERMISSION_REQUEST
);
}
}
}
记住我不能运行该代码,因此它可能需要一些薄层色谱法,但它是一个开始
ACCESS_NOTIFICATION_POLICY不是危险的许可... – Selvin
错误的答案... – user2511882
@ user2511882我同意显式请求权限不是必需的。当我检查ACCESS_NOTIFICATION_POLICY的ContextCompat.checkSelfPermission时,我得到了PackageManager.PERMISSION_GRANTED。 – jradich1234
从Android开发者:
通过向用户发送匹配 系统意向操作ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS的活动请求策略访问。
使用ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED来监听 用户授予或拒绝此访问。
因此,要获得许可,您应该通过发送用户相匹配的系统意图动作ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS活动请求策略的访问和监听使用广播接收器与行动ACTION_NOTIFICATION_POLICY_ACCESS_GRANTED_CHANGED响应。
而且看一看从NotificationManager方法isNotificationPolicyAccessGranted(),以检查是否同意授予。
要更正java.lang.SecurityException: Access denied to process: 3454
错误,必须将android.permission.SET_WALLPAPER
权限添加到Android清单。
添加下面一行在你AndroidManifest.xml
:
uses-permission android:name="android.permission.SET_WALLPAPER"
什么版本的Android?我知道在最近的版本中,您需要通过对话框请求权限才能使用。 Manifest权限仅用于旧设备,因此他们可以在市场上显示权限使用情况。 –
最小和目标API是23 – jradich1234
看看这个:https://developer.android.com/training/permissions/requesting.html –