寫Android 6的危險權限很累嗎? 第三方好物PermissionsDispatcher

By | 2017-09-10

Android 6.0以後的權限設計讓Android工程師們傷透腦筋,邁進Android Oreo的今日仍有不少專案疏於維護,近一年來因Google 上架權限審核加嚴而不得不修改危險權限動態授權設計。也因動態授權機制繁雜,不少第三方類別庫因應而生。

這篇將介紹頗受歡迎的第三方類別庫,PermissionsDispatcher 

在開始前,請先確實了解Android 6.0的Permission權限設計,為什麼Android 6.0要分成一般權限和危險權限、何謂危險權限、如何執行中取得使用者授權等,畢竟所有的第三方類別庫都是以Google Android原生API為基礎,架構在原生API上的。

PermissionsDispatcher

PermissionsDispatcher之所以受歡迎,除了簡單易用,最大原因應該是強大的IntelliJ plugin ,畢竟滑鼠點一點就能長出程式碼乃懶人極品。

準備工作

1. Install PermissionsDispatcher Plugin

先安裝PermissionsDispatcher Plugin,才能透過此工具自動產生要求使用者動態授權的程式碼。

2. Add PermissionDipspatcher dependencies

開啟build.gradle ,按滑鼠右鍵 -> 選取【Generate】 -> 【Add PermissionDispatcher dependencies】 即自動產生 build.gradle 內第三方類別庫依賴。

Add PermissionDispacher dependencies 尚不適用在 Android Studio 3,倘若在Android Studio 3 使用,請手動加入

3. Generate Runtime Permissions

開啟MainActivity.java,在空白處按滑鼠右鍵 -> 選取【Generate】 -> 【Generate Runtime Permissions】

選擇 Rebuild將會重新編譯專案,產生必要類別、方法等程式碼。

編譯完成後,自動產生程式碼如下:

填入程式碼

  • 按下撥號鍵,在此同樣使用PermissionDispatcher plugin帶來的優勢,自動產生要求授權程式碼。

  • 使用者按下【拒絕】
  • 第二次(之後)要求授權
    onShowRational目的在提醒使用者,此項授權之必要性,Hank老師給了一個非常貼切的翻譯 — 曉以大義 
  • 使用者勾選【不要再詢問】
  • 撥話
     

執行結果 :

我們可以看到,第一次出現要求使用者授權時,對話框上只有【拒絕】和【允許】兩個按鍵,被拒絕後,第二次要求授權,多了【不要再詢問】可供勾選,一旦勾選【不要再詢問】且拒絕授權後,再按撥號鍵,將不再要求授權 (當然,可以提醒使用者到設定畫面重新允許權限等)

各位發現一個困擾了嗎?當使用者勾選不再詢問後,app將不再繼續往下作業,使用者或許忘了曾按下【不要再詢問】及【拒絕】權限,此時會提高app被移除的機率,有沒有其他方式可解呢?有的,下次再和朋友分享其他解法。

最後想再次提醒讀者,工具雖然可加快開發速度,但android 基本運作原理是一切的基礎,任何第三方類別庫均是以此為基礎,請務必熟悉 android 原生 runtime permission 寫法。

版權聲明

本文章版權為郭香宜所有,授權範圍僅限綠豆湯網站使用,除Facebook之類社群等未更改本文章出處之分享行為不在此限,其他個人或公司未經作者同意,不得任意將本文章內容轉載至其他網站,或以任何形式重製,為以免觸犯著作權法,請尊重作者之智慧財產權。

相關文章:

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *