Android 6.0運行時權限處理

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>

使用Rxjava處理權限的開源項目:RxPermissions

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容