gpt4 book ai didi

Android 请求 ACCESS_NOTIFICATION_POLICY 和静音手机

转载 作者:行者123 更新时间:2023-12-03 15:06:44 24 4
gpt4 key购买 nike

我是一名初级 Android 开发人员,手头有一个有趣的问题。我正在尝试将手机静音

AudioManager audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

但我收到以下错误
java.lang.SecurityException: Not allowed to change Do Not Disturb state

现在我不明白这一点,因为我正在使用 EasyPermissions ( https://github.com/googlesamples/easypermissions ) 并请求权限
Manifest.permission.ACCESS_NOTIFICATION_POLICY

但它并没有要求我在应用程序启动时允许任何事情。我认为这是因为 ACCESS_NOTIFICATION_POLICY 是非危险权限,因此在安装时授予,为此我还将它添加到我的 manifest.xml 中
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />

但它仍然无法正常工作,我的应用程序崩溃了,因为它引发了“不允许更改为请勿打扰状态”错误。奇怪的是,我发现我可以使用以下代码请求进入“请勿打扰”屏幕
Intent intent = new Intent(
android.provider.Settings
.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
startActivity(intent);

我在这里做错了什么?为什么我不能将此权限作为普通权限请求?我真的必须通过 Intent 让我的应用程序将手机静音吗?

最佳答案

来自 AudioManager#setRingerMode() reference :

From N onward, ringer mode adjustments that would toggle Do Not Disturb are not allowed unless the app has been granted Do Not Disturb Access.



从 API 级别 23 起,您必须声明 ACCESS_NOTIFICATION_POLICY list 中的权限 那么用户需要授予您的应用访问权限以切换“请勿打扰”。您可以使用 NotificationManager#isNotificationPolicyAccessGranted() 检查是否授予访问权限.如果您的包无权访问,请启动 ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS Intent ,以便用户可以授予您的应用访问权限。
NotificationManager n = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
if(n.isNotificationPolicyAccessGranted()) {
AudioManager audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}else{
// Ask the user to grant access
Intent intent = new Intent(android.provider.Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
startActivityForResult(intent);
}

关于Android 请求 ACCESS_NOTIFICATION_POLICY 和静音手机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43123650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com