用 RxPermissions 處理 Android 6.0 Permission

Android 6(API level 23) 之後,開發者會被要求者處理 APP 權限問題(針對 Run),程式碼要撰寫相關邏輯:檢查有沒有權限、處理取得權限後的行為...等。官方範例碼大概就是畫面跳轉類似用 Listener Pattern 的方式來處理,另外還要處理當使用者選取"不要再跳出權限對話框"的特殊狀況。總覺得應該就是一個 yes 或 no 就該解決的事情,但每次寫出來都不一樣,各別提不同人寫出來的流程都是天差地遠了。
這次改用 RxPermissions 來重寫,RxPermissions 封裝邏輯後寫出來的程式碼順序很直覺:

  • 路徑1:要求權限 > 都有權限 > 執行需要權限的程式碼。
  • 路徑2:要求權限 > 有權限被拒絕會自動跳出對話框 > 還是有權限被拒絕(對話框沒勾選不再詢問) > 再重新要求權限 或 執行當沒有權限還是可以執行的程式碼。
  • 路徑3:要求權限 > 有權限被拒絕而且曾在對話框勾選不再訊問 > 提示有用訊息並引導使用者到設定頁面打開權限 > onActivityResult 處理設定頁面跳轉回來的事件再重新要求權限。
廢話不多說,上扣!