Android6.0權限官網 <a href="https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html?hl=zh-cn" target="_blank">https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html?hl=zh-cn</a> 系統權限: <a href="https://developer.android.com/training/permissions/index.html?hl=zh-cn" target="_blank">https://developer.android.com/training/permissions/index.html?hl=zh-cn</a> 權限的最佳做法: <a href="https://developer.android.com/training/permissions/best-practices.html?hl=zh-cn#testing" target="_blank">https://developer.android.com/training/permissions/best-practices.html?hl=zh-cn#testing</a> 該庫的github位址 <a href="https://github.com/hotchemi/PermissionsDispatcher" target="_blank">https://github.com/hotchemi/PermissionsDispatcher</a>
權限
使用PermissionsDispatcher,需要在project的 build.gradle中添加
在app module中的build.gradle中添加:
目前${latest.version}
最新的是2.3.2。
在工程目錄下build.gradle 檔案中添加:
然後在app module中的build.gradle中添加:(必須在app module中添加)
PermissionsDispatcher隻介紹幾個注解,保持其通用API簡潔:
注:帶注釋的方法一定不能private。
注解
需要
描述
@RuntimePermissions
在Activity或者Fragment中需要添加,來處理權限的問題
@NeedsPermission
注釋其執行需要一個或多個許可的作用的方法(當使用者授予了權限之後,會調用使用此注解的方法)
@OnShowRationale
注釋這解釋了為什麼需要許可/秒/方法。它通過在一個PermissionRequest可用于繼續或中止在使用者輸入的目前的許可請求對象
@OnPermissionDenied
注釋這是調用的方法,如果使用者不授予的權限
@OnNeverAskAgain
注釋如果使用者選擇讓裝置“不再詢問”有關許可被調用的方法
具體使用如下:
Activity繼承了AppCompatActivity,是的,如果使用PermissionsDispatcher進行權限管理,那麼Activity就要繼承AppCompatActivity。這就要使用到了相容包裡的類了。同樣此時相應Activity中使用的主題,也需要進行修改,修改成相應相容包裡的主題。
在編譯時,PermissionsDispatcher産生的一類MainActivityPermissionsDispatcher([活動名稱] + PermissionsDispatcher),您可以使用安全地通路這些許可保護的方法。
MainActivityPermissionsDispatcher需要自己編譯才會有:
1、AndroidManifest
2、在注解的時候添加sdk版本控制
使用到的權限需要在Mnifest裡面注冊
PermissionsDispatcher依賴于support-v4由預設庫,以便能夠使用一些權限compat的類。
需要添加support-v13庫一起PermissionsDispatcher在您的項目,它将使原生片段支援
另請參閱
<a href="https://developer.android.com/about/versions/marshmallow/android-6.0.html?hl=zh-cn" target="_blank">Android 6.0 API 概覽</a>
Android 6.0(API 級别 23)除了提供諸多新特性和功能外,還對系統和 API 行為做出了各種變更。
如果您之前釋出過 Android 應用,請注意您的應用可能受到這些平台變更的影響。
此版本引入了一種新的權限模式,如今,使用者可直接在運作時管理應用權限。這種模式讓使用者能夠更好地了解和控制權限,同時為應用開發者精簡了安裝和自動更新過程。使用者可為所安裝的各個應用分别授予或撤銷權限。
方法。即使您的應用并不以 Android 6.0(API 級别 23)為目标平台,您也應該在新權限模式下測試您的應用。
1、在AndroidManifest檔案中添加需要的權限。
這個步驟和我們之前的開發并沒有什麼變化,試圖去申請一個沒有聲明的權限可能會導緻程式崩潰。
2、檢查權限
這裡涉及到一個API,ContextCompat.checkSelfPermission,主要用于檢測某個權限是否已經被授予,方法傳回值為PackageManager.PERMISSION_DENIED或者PackageManager.PERMISSION_GRANTED。當傳回DENIED就需要進行申請授權了。
3、申請授權
該方法是異步的,第一個參數是Context;第二個參數是需要申請的權限的字元串數組;第三個參數為requestCode,主要用于回調的時候檢測。可以從方法名requestPermissions以及第二個參數看出,是支援一次性申請多個權限的,系統會通過對話框逐一詢問使用者是否授權。
4、處理權限申請回調
首先驗證requestCode定位到你的申請,然後驗證grantResults對應于申請的結果,這裡的數組對應于申請時的第二個權限字元串數組。如果你同時申請兩個權限,那麼grantResults的length就為2,分别記錄你兩個權限的申請結果。如果申請成功,就可以做你的事情了~
作者:流水潺湲
連結:http://www.jianshu.com/p/d299f22dfbdb
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
現在網上不少關于權限的庫,可以直接用的,在GitHub上搜尋即可
<a href="https://github.com/search?o=desc&q=android+permission&s=stars&type=Repositories&utf8=%E2%9C%93" target="_blank">https://github.com/search?o=desc&q=android+permission&s=stars&type=Repositories&utf8=%E2%9C%93</a>