Android 6.0分水嶺
Android 6.0 (API 23) 開始,危險級別權(quán)限(涉及用戶隱私數(shù)據(jù))僅在執(zhí)行相應(yīng)的邏輯操作時才通知請求用戶授權(quán)。
targetSdkVersion < 23 時,App在安裝時獲取所有權(quán)限,但在6.0系統(tǒng)中用戶可手動設(shè)置app權(quán)限許可。
targetSdkVersion >= 23 時,App依然需要聲明所需的所有權(quán)限,但在6.0系統(tǒng)中,App安裝時僅自動授權(quán)普通權(quán)限,危險權(quán)限需要在所需權(quán)限的邏輯執(zhí)行前向用戶申請授權(quán)。
參考:系統(tǒng)權(quán)限指導(dǎo)
申請授權(quán)
通過PermissionChecker或ContextCompat.checkSelfPermission方法查詢某個權(quán)限授權(quán)狀態(tài),配合ActivityCompat.requestPermissions、shouldShowRequestPermissionRationale方法請求授權(quán)和判斷是否需要向用戶解釋權(quán)限用途。覆蓋Activity.onRequestPermissionsResult方法接收權(quán)限申請結(jié)果。
也可使用第三方庫 PermissionsDispatcher,以注解方式自動、快速執(zhí)行權(quán)限申請邏輯。
權(quán)限名稱字符串可從Manifest.permission對象中提取。