在我使用Java的Android应用程序中,我定义了一个checkForPermission()方法来检查单个权限的授予状态。如果尚未授予该权限,则它将使用ActivityCompat.requestPermissions()向用户请求此权限。
以下是一种方法:
private boolean checkForPermission(String permission, int rationaleMessageId, int requestCode) {
// Check if permission is already granted.
if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
// Permission has not been granted. Check if a rationale AlertDialog should be shown.
if (ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) {
// Show rationale AlertDialog explaining why this permission is needed.
new AlertDialog.Builder(this)
.setTitle(R.string.rationale_dialog_title)
.setMessage(rationaleMessageId)
.setPositiveButton(android.R.string.ok,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
// Request permission again.
ActivityCompat.requestPermissions(MainActivity.this, new String[]{permission}, requestCode);
}
})
.create()
.show();
}
// Do not show rationale AlertDialog. Just request permission again.
else {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{permission}, requestCode);
}
return false;
}
return true;
}我注意到,该方法对于简单权限(如android.permission.WRITE_EXTERNAL_STORAGE )非常好,但对于更危险的权限(如android.permission.WRITE_SETTINGS )则不起作用。
我想知道ActivityCompat.requestPermissions()实际上可能请求哪种类型的权限。我的假设是,必须使用其他方法请求危险的权限,但我希望能够得到任何反馈。谢谢。
发布于 2022-03-02 23:07:07
具体来说,requestPermissions()用于具有protectionLevel of dangerous的权限。
WRITE_EXTERNAL_STORAGE is dangerous.WRITE_SETTINGS is not。
https://stackoverflow.com/questions/71329901
复制相似问题