发布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语句中的运算符。 请告诉我我哪里错了?
答案 0 :(得分:0)
我不认为有用!第二个if语句中的运算符。如果您拥有该权限,则if条件返回true。要使用该权限执行的函数应该写在if语句中。如果if返回false,则执行else情况,这将在用户拒绝权限或用户过去选择“不再询问”选项时发生。