在我使用 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()
實際上可能會請求哪些型別的權限。我的假設是必須使用其他方式請求危險的權限,但我希望我能得到任何反饋。謝謝你。
uj5u.com熱心網友回復:
具體來說,requestPermissions()
用于具有protectionLevel
of的權限dangerous
。
WRITE_EXTERNAL_STORAGE
是dangerous
。WRITE_SETTINGS
不是。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/436594.html