天天看點

Android權限管理PermissionsDispatcher2.3.2使用+原生6.0權限使用PermissionsDispatcher2.3.2使用使用步驟:原生6.0權限使用補充

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>
Android權限管理PermissionsDispatcher2.3.2使用+原生6.0權限使用PermissionsDispatcher2.3.2使用使用步驟:原生6.0權限使用補充

權限

使用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&amp;q=android+permission&amp;s=stars&amp;type=Repositories&amp;utf8=%E2%9C%93" target="_blank">https://github.com/search?o=desc&amp;q=android+permission&amp;s=stars&amp;type=Repositories&amp;utf8=%E2%9C%93</a>

繼續閱讀