Android 如何侦听用户授予或拒绝请勿打扰权限?

Android 如何侦听用户授予或拒绝请勿打扰权限?,android,android-permissions,Android,Android Permissions,我想向用户请求访问\通知\策略权限,因此我使用了以下代码: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !notificationManager.isNotificationPolicyAccessGranted()) { //Permission not granted so we will ask for it.

我想向用户请求访问\通知\策略权限,因此我使用了以下代码:

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
                && !notificationManager.isNotificationPolicyAccessGranted()) {
            //Permission not granted so we will ask for it.
            Intent intent = new Intent(
                    android.provider.Settings
                            .ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
            startActivity(intent);

            //did the user allow the Don't Disturb  permission or just ignore it?

        } else {
            //Permission granted

        }  
但我如何监听用户对该请求的批准或拒绝?也许他不允许DND的许可,我怎么知道

你应该看看。这里有一个带有注释的示例,可以帮助您理解

您完成了第一部分,即请求权限,然后必须使用
onRequestPermissionsResult(int-requestCode,String[]permissions,int[]grantResults)处理响应。

你可以这样写:

if(android.os.Build.VERSION.SDK\u INT>=Build.VERSION\u CODES.M){
NotificationManager mNotificationManager=(NotificationManager)getApplication().getSystemService(Context.NOTIFICATION_服务);
if(mNotificationManager.isNotificationPolicyAccessPermited()){
Log.d(“政策许可”、“电话授权的DND许可”);
}否则{
Log.d(“策略许可”,“未授予电话DND许可”);
}
}
您应该看看。这里有一个带有注释的示例,可以帮助您理解

您完成了第一部分,即请求权限,然后必须使用
onRequestPermissionsResult(int-requestCode,String[]permissions,int[]grantResults)处理响应。

你可以这样写:

if(android.os.Build.VERSION.SDK\u INT>=Build.VERSION\u CODES.M){
NotificationManager mNotificationManager=(NotificationManager)getApplication().getSystemService(Context.NOTIFICATION_服务);
if(mNotificationManager.isNotificationPolicyAccessPermited()){
Log.d(“政策许可”、“电话授权的DND许可”);
}否则{
Log.d(“策略许可”,“未授予电话DND许可”);
}
}

我使用了
startActivityForResult
而不是
startActivity
,如下所示:

NotificationManager notificationManager = 
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        assert notificationManager != null;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
                && !notificationManager.isNotificationPolicyAccessGranted()) {
            //Permission not granted so we will ask for it.
            Intent intent = new Intent(Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
            startActivityForResult(intent, 55);
        } else {
            //Permission was granted          
        }
然后,我使用isNotificationPolicyAccessPermited()检查了ActivityResult中的结果


这对我很有效,但我不知道是否有更好的方法。

我使用了
startActivityForResult
而不是
startActivity
,如下所示:

NotificationManager notificationManager = 
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        assert notificationManager != null;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
                && !notificationManager.isNotificationPolicyAccessGranted()) {
            //Permission not granted so we will ask for it.
            Intent intent = new Intent(Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
            startActivityForResult(intent, 55);
        } else {
            //Permission was granted          
        }
然后,我使用isNotificationPolicyAccessPermited()检查了ActivityResult中的结果


这对我很有效,但我不知道是否有更好的方法。

但访问通知策略权限不同,要请求此权限,我们会为使用意图的用户打开一个设置屏幕,我没有调用
requestPermissions()
。用于侦听用户授予或拒绝此访问。我想使用操作\u通知\u策略\u访问\u授予\u更改,但如何更改?:(如果你不需要,为什么要使用它?这是另一篇有类似需求的帖子,在他的案例中,他不需要使用它,因为他有
OnPreferenceClickListener
,但在我的案例中,我需要它。关于
onRequestPermissionsResult
,它只适用于通过
requestPermissions()请求的权限。)
,但DND权限不是。但访问通知策略权限不同,若要请求此权限,我们将为使用意图的用户打开一个设置屏幕,我没有调用
requestPermissions()
。用于侦听用户授予或拒绝此访问。我想使用操作通知策略授予访问权限,但如何更改?:(如果你不需要,为什么要使用它?这是另一篇有类似需求的帖子,在他的案例中,他不需要使用它,因为他有
OnPreferenceClickListener
,但在我的案例中,我需要它。关于
onRequestPermissionsResult
,它只适用于通过
requestPermissions()请求的权限。)
,但DND权限无效。