天天看點

Android6.0動态權限申請步驟以及需要注意的一些坑

因為工作需要,簡單研究了一下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設定為&gt;=23,則必須按照Android谷歌的要求,動态的申請權限,如果你暫時不打算支援動态權限申請,則targetSdkVersion最大隻能設定為22.

2 在AndroidManifest.xml中申請你需要的權限,包括普通權限和需要申請的特殊權限。

3.開始申請權限,此處分為3部。

(1)檢查是否由此權限checkSelfPermission(),如果已經開啟,則直接做你想做的。

(2)如果未開啟,則判斷是否需要向使用者解釋為何申請權限shouldShowRequestPermissionRationale。

(3)如果需要(即傳回true),則可以彈出對話框提示使用者申請權限原因,使用者确認後申請權限requestPermissions(),如果不需要(即傳回false),則直接申請權限requestPermissions()。

(這裡是一部門代碼,底部有比較完善的代碼,整個demo可以在github中下載下傳)。

Android6.0動态權限申請步驟以及需要注意的一些坑

單個權限申請.png

Android6.0動态權限申請步驟以及需要注意的一些坑

6.0以下系統的應用程式安裝界面.png

(1)checkSelfPermission:檢查是否擁有這個權限

(2)requestPermissions:請求權限,一般會彈出一個系統對話框,詢問使用者是否開啟這個權限。

(3)shouldShowRequestPermissionRationale:Android原生系統中,如果第二次彈出權限申請的對話框,會出現“以後不再彈出”的提示框,如果使用者勾選了,你再申請權限,則shouldShowRequestPermissionRationale傳回true,意思是說要給使用者一個 解釋,告訴使用者為什麼要這個權限。然而,在實際開發中,需要注意的是,很多手機對原生系統做了修改,比如小米,小米4的6.0的shouldShowRequestPermissionRationale 就一直傳回false,而且在申請權限時,如果使用者選擇了拒絕,則不會再彈出對話框了。。。。 是以說這個地方有坑,我的解決方法是,在回調裡面處理,如果使用者拒絕了這個權限,則打開本應用資訊界面,由使用者自己手動開啟這個權限。

(4)每個應用都有自己的權限管理界面,裡面有本應用申請的權限以及各種狀态,即使使用者已經同意了你申請的權限,他也随時可以關閉

Android6.0動态權限申請步驟以及需要注意的一些坑

權限管理界面.png

其實和申請一個權限是一樣的,隻是requestPermissions(final @NonNull Activity activity,

final @NonNull String[] permissions, final int requestCode),裡面的permissions給的參數多些而已。

Android6.0動态權限申請步驟以及需要注意的一些坑

申請多個權限.png

關于權限請求結果的回調。Activity實作ActivityCompat.OnRequestPermissionsResultCallback接口,重寫onRequestPermissionsResult方法。

<a href="http://www.jianshu.com/nb/5072505">Android項目實戰</a>

    本文轉自 一點點征服   部落格園部落格,原文連結:http://www.cnblogs.com/ldq2016/p/7088787.html,如需轉載請自行聯系原作者

繼續閱讀