相关疑难解决方法(0)

Android M Permissions:对shouldShowRequestPermissionRationale()函数的使用感到困惑

我正在阅读关于Android M中新Permissions模型的官方文档.它讨论了如果应用程序先前已请求此权限并且用户拒绝该请求shouldShowRequestPermissionRationale(),则返回的函数true.如果用户过去拒绝了权限请求并选择了"不再询问"选项,则此方法返回false.

但是我们如何区分以下两种情况呢?

案例1:该应用程序没有权限,之前未向用户询问过该权限.在这种情况下,shouldShowRequestPermissionRationale()将返回false,因为这是我们第一次询问用户.

情况2:用户已拒绝该权限并选择"不再询问",在这种情况下,shouldInShowRequestPermissionRationale()也将返回false.

我想将用户发送到案例2中的应用程序设置页面.我如何区分这两种情况?

permissions android android-6.0-marshmallow

137
推荐指数
5
解决办法
6万
查看次数

shouldShowRequestPermissionRationale 方法的工作原理

我想在运行时请求权限。我查看了官方 Android 开发人员网站,它说如果权限先前被拒绝,则 shouldShowRequestPermissionRationale 返回 true;如果权限被拒绝,则返回 false,并且选择了不再询问复选框。然后我在网站上看到了这段代码:

if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.READ_CONTACTS)) {
        // Show an explanation to the user *asynchronously* -- don't block
        // this thread waiting for the user's response! After the user
        // sees the explanation, try again to request the permission.
    } else {
        // No explanation needed; request the permission
        ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.READ_CONTACTS},
                MY_PERMISSIONS_REQUEST_READ_CONTACTS);

        // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
        // app-defined int constant. The callback method gets the
        // result of the request.
    }
Run Code Online (Sandbox Code Playgroud)

我的两个问题是:

1)如果之前没有询问用户权限会发生什么?我们需要正确地询问他?你把代码放在哪里?

2)即使用户选中了“不再询问”复选框,上面的代码也会请求权限(当shouldShowRequestPermissionRationale返回false时,即,在else块中)。当用户选中该选项时,如何请求权限?

android android-permissions

6
推荐指数
1
解决办法
8416
查看次数