因為工作需要,簡單研究了一下Android6.0權限申請,在Google提供的sample的基礎上,寫了一個簡單的demo。算是自己的筆記吧,可能會比較混亂,主要是友善以後檢視。後期有别的問題,随時更新~
<a href="https://github.com/qianxiaoai/RuntimePermissionsDemo/tree/dev" target="_blank">本demo github下載下傳位址!!!</a>
<a href="https://github.com/googlesamples/android-RuntimePermissions" target="_blank">Google提供的demo的下載下傳位址</a>
6.0權限的基本知識,以下是需要單獨申請的權限,共分為9組,每組隻要有一個權限申請成功了,就預設整組權限都可以使用了。
以下是普通權限,隻需要在AndroidManifest.xml中申請即可。
将targetSdkVersion設定為23,注意,如果你将targetSdkVersion設定為>=23,則必須按照Android谷歌的要求,動态的申請權限,如果你暫時不打算支援動态權限申請,則targetSdkVersion最大隻能設定為22.
2 在AndroidManifest.xml中申請你需要的權限,包括普通權限和需要申請的特殊權限。
3.開始申請權限,此處分為3部。
(1)檢查是否由此權限checkSelfPermission(),如果已經開啟,則直接做你想做的。
(2)如果未開啟,則判斷是否需要向使用者解釋為何申請權限shouldShowRequestPermissionRationale。
(3)如果需要(即傳回true),則可以彈出對話框提示使用者申請權限原因,使用者确認後申請權限requestPermissions(),如果不需要(即傳回false),則直接申請權限requestPermissions()。
(這裡是一部門代碼,底部有比較完善的代碼,整個demo可以在github中下載下傳)。

單個權限申請.png
6.0以下系統的應用程式安裝界面.png
(1)checkSelfPermission:檢查是否擁有這個權限
(2)requestPermissions:請求權限,一般會彈出一個系統對話框,詢問使用者是否開啟這個權限。
(3)shouldShowRequestPermissionRationale:Android原生系統中,如果第二次彈出權限申請的對話框,會出現“以後不再彈出”的提示框,如果使用者勾選了,你再申請權限,則shouldShowRequestPermissionRationale傳回true,意思是說要給使用者一個 解釋,告訴使用者為什麼要這個權限。然而,在實際開發中,需要注意的是,很多手機對原生系統做了修改,比如小米,小米4的6.0的shouldShowRequestPermissionRationale 就一直傳回false,而且在申請權限時,如果使用者選擇了拒絕,則不會再彈出對話框了。。。。 是以說這個地方有坑,我的解決方法是,在回調裡面處理,如果使用者拒絕了這個權限,則打開本應用資訊界面,由使用者自己手動開啟這個權限。
(4)每個應用都有自己的權限管理界面,裡面有本應用申請的權限以及各種狀态,即使使用者已經同意了你申請的權限,他也随時可以關閉
權限管理界面.png
其實和申請一個權限是一樣的,隻是requestPermissions(final @NonNull Activity activity,
final @NonNull String[] permissions, final int requestCode),裡面的permissions給的參數多些而已。
申請多個權限.png
關于權限請求結果的回調。Activity實作ActivityCompat.OnRequestPermissionsResultCallback接口,重寫onRequestPermissionsResult方法。
<a href="http://www.jianshu.com/nb/5072505">Android項目實戰</a>
本文轉自 一點點征服 部落格園部落格,原文連結:http://www.cnblogs.com/ldq2016/p/7088787.html,如需轉載請自行聯系原作者