6.0前后權限處理的變化
- Before:安裝時處理權限
- After:運行時根據需求請求權限(只針對隱私權限)
</br>
權限處理
// ------------------------------------- 檢查權限 -------------------------------------
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.RECORD_AUDIO)) {
// 已經授權
} else {
// 未授權
}
// ------------------------------------- 請求權限 -------------------------------------
// 調用后彈出系統權限處理窗口,由用戶決定是否授權
// 拒絕授權并選了“不再詢問”后以后調用requestPermissions則不會彈出窗口
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.RECORD_AUDIO}, REQUEST_CODE);
// ------------------------------------- 請求回調 ------------------------------------
/**
* 參數1:requestCode-->是requestPermissions()方法傳遞過來的請求碼。
* 參數2:permissions-->是requestPermissions()方法傳遞過來的需要申請權限
* 參數3:grantResults-->是申請權限后,系統返回的結果,PackageManager.PERMISSION_GRANTED表示授權成功,PackageManager.PERMISSION_DENIED表示授權失敗。
* grantResults和permissions是一一對應的
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
// ------------------------------------- 權限解釋 ------------------------------------
// 僅僅一種情況下為true,就是當用戶沒有完全拒絕的時候(拒絕了但沒選“不再詢問”)
ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.RECORD_AUDIO)
</br>