執行時許可權
阿新 • • 發佈:2021-08-30
許可權分為普通許可權和危險許可權,其中危險許可權有9組24個。
在Android 6以上的系統中執行授權,如果該許可權屬於危險許可權,那麼此時要進行執行時許可權處理,如果不是危險許可權,則只要在AndroidManifest.xml檔案中新增一下許可權宣告即可。
注意:一旦授予APP某個危險許可權,則該許可權所在許可權組的其他危險許可權一併被授予。
- 在Android 8以上的系統中,若要APP執行撥打電話的邏輯,則需要進行授權處理,而CALL_PHONE許可權為危險許可權,所以我們要進行執行時許可權授予。在執行時許可權授予的邏輯中,首先判斷該許可權是否被授予,如果許可權已被授予,執行相關的操作。
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED)
- 如果沒被授予,申請授予許可權。此時,會彈出選擇框,讓使用者選擇是否授予該許可權。使用者選擇後,會呼叫onRequestPermissionsResult()。
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, 1)
- 我們需要在該Activity中重寫onRequestPermissionsResult()
@Override public void onRequestPermissionsResult(int requestCode, @NonNull @org.jetbrains.annotations.NotNull String[] permissions, @NonNull @org.jetbrains.annotations.NotNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case 1: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { readContacts(); } else { Toast.makeText(this, "you denied the permission", Toast.LENGTH_LONG).show(); } break; default: } }