Android 6.0及以上權限處理
--
為了保證Android系統(tǒng)的完整性以及用戶的隱私性,所有的APP都運行在一個單獨的沙盒中,如果想要訪問沙盒之外的資源必須有明確指定是否有該權限,在Android 6.0之前,只要指明了權限系統(tǒng)一般都會自動授權,也有需要詢問用戶是否授權。但是在Android 6.0以及后對于危險權限必須用戶同意后才能進行。
1.定義應用所需權限
App Manifest中定義所需權限,只定義所需的,不使用的不要定義。
2.處理運行時權限請求
1.權限組概念
一個或者多個權限組成一個權限組,例如
READ_CONTACTS,WRITE_CONTACTS和GET_ACCOUNTS同屬CONTACTS權限組,申請其中任一個權限系統(tǒng)都會提示同樣的提示,且用戶允許其中一個權限則權限組中其他權限自動允許。
2.權限分類
權限分成正常權限和危險權限,如果不會威脅到用戶隱私的權限通常會在安裝時自動允許,而危險權限即使你再
Mainifest列出來也會顯式要用戶處理。下面表中的危險權限在你APPtargetSdkVersion大于等于23是需要特殊處理。Dangerous permissions and permission groups
Dangerous permissions and permission groups
3. 檢測權限和請求權限
1. 判斷是否有相應權限
int permissionCheck = ContextCompat.checkSelfPermission(thisActivity,Manifest.permission.ACCESS_FINE_LOCATION);返回的結果permissionCheck如果是允許則返回PackageManager.PERMISSION_GRANTED否則 返回PERMISSION_DENIED,如果是允許了則直接使用。2.請求權限
ActivityCompat.shouldShowRequestPermissionRationale(activity, p);返回是否需要一個我們自己定義的解釋,默認返回false當用戶選擇拒絕后返回true,拒絕的同是選擇不再詢問則返回false
ActivityCompat.requestPermissions(activity, ps, requestCode);請求相應權限,效果如下:requestPermissions


