关于应该显示权限请求理由的困惑

时间:2016-11-16 12:46:10

标签: android android-6.0-marshmallow android-permissions

我对Android M及以上的新权限模型有点好奇,特别是关于方法" shouldShowRequestPermissionRationale()"。 在Documentation

  

为了帮助找到用户可能需要解释的情况,Android提供了一个实用方法,shouldShowRequestPermissionRationale()。如果应用先前已请求此权限且用户拒绝了该请求,则此方法返回true。

     

注意:如果用户过去拒绝了权限请求并在权限请求系统对话框中选择了“不再询问”选项,则此方法返回false。如果设备策略禁止应用程序拥有该权限,则该方法也会返回false。

好的,用户肯定拒绝了许可。现在来自同一页面的代码snipet:

// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
                Manifest.permission.READ_CONTACTS)
        != PackageManager.PERMISSION_GRANTED) {
    // Should we show an explanation?
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
            Manifest.permission.READ_CONTACTS)) {

        // Show an expanation 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, we can 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.
    }
}

混淆来自else bloc,它返回false,然后用户拒绝了该权限,这意味着我们不断询问用户他拒绝的prrmission,这与best practices

相矛盾

我的问题是;我们怎样才能实现一个良好的逻辑来处理这一切?

0 个答案:

没有答案