这段代码如何用于检查权限?

时间:2017-01-30 20:00:28

标签: android permissions

发布api 23我们需要动态检查权限。 根据我的理解,流程应该是这样的

1。是用户授予的权限? 如果没有 - >我们可以显示请求对话框,也可以不显示(因为他选择了#34;不再播种"过去。

如果是 - >执行需要权限的功能。

现在根据谷歌文档的代码是:

    // 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 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, 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.
    }
}

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

现在据我说应该有一个"!"第二个if语句中的运算符。 请告诉我我哪里错了?

1 个答案:

答案 0 :(得分:0)

我不认为有用!第二个if语句中的运算符。如果您拥有该权限,则if条件返回true。要使用该权限执行的函数应该写在if语句中。如果if返回false,则执行else情况,这将在用户拒绝权限或用户过去选择“不再询问”选项时发生。