我对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
相矛盾我的问题是;我们怎样才能实现一个良好的逻辑来处理这一切?