Android 6.0許可權管理筆記

weixin_33912246發表於2017-02-16

Android系統6.0之後的應用許可權管理策略做了改動,把許可權做了安全的劃分:普通許可權和需要申請的使用者許可權

  1. 普通許可權
    如果你的應用僅支援6.0以下手機,不需要考慮,系統不會做這個檢查策略。
    如果你的應用支援6.0以上且不需要訪問使用者隱私相關的意圖,這個也不需要做檢查。(除了使用者許可權的9大安全,其他照舊)
    普通許可權處理方式只需要在AndroidManifest.xml中直接申請即可,使用者在安裝的時候知道有這個許可權就行。

  2. 使用者許可權
    該許可權是在6.0以上需要做提前宣告並提示使用者手動允許的才可以繼續操作,否則應用會出現崩潰。
    該部分應用涉及9大分組,每個分組只要同意了一個許可權,同分組的其他全向一併獲取,也就是說9大分組告訴使用者應用會涉及他的哪部分資訊。所有的許可權可以檢視Manifest.java檢視

//1.日曆相關
public static final String CALENDAR = "android.permission-group.CALENDAR";
//2.相機相關
public static final String CAMERA = "android.permission-group.CAMERA";
//3.聯絡人相關
public static final String CONTACTS = "android.permission-group.CONTACTS";
//4.位置相關
public static final String LOCATION = "android.permission-group.LOCATION";
//5.麥克風相關
public static final String MICROPHONE = "android.permission-group.MICROPHONE";
//6.手機資訊相關
public static final String PHONE = "android.permission-group.PHONE";
//7.感測器相關
public static final String SENSORS = "android.permission-group.SENSORS";
//8.簡訊相關
public static final String SMS = "android.permission-group.SMS";
//9.儲存相關
public static final String STORAGE = "android.permission-group.STORAGE";

使用者許可權使用也需要現在AndoridManifest.xml中宣告,並且在執行時需要做授權檢查。
相關API

//檢查是否已經授權某許可權
//PackageManager.PERMISSION_GRANTED 0
//PackageManager.PERMISSION_DENIED -1
ActivityCompat.checkSelfPermission(Activity activity, Stirng permission)
//請求授權
requestPermissions(Activity activity, String[] permissions,int requestCode)
//授權回撥
onRequestPermissionsResult(int requestCode, String[] permissions,int[] grantResults) 

目前高版本的AS已經自動檢測存在許可權風險的程式碼,如果自己已經封裝或者確定獲取了許可權,可去掉該相關Lint檢查或try一下。(有程式碼潔癖的人絕對忍受不了報個紅叉)

相關文章