使用者拒絕Android 6.0的危險權限後,APP難道只有被移除一途?Google推出的好物easypermissions

作者 | 2017-09-15

Android 6.0 危險權限需在執行階段取得使用者授權,當使用者第二次【拒絕】授權且勾選【不要再詢問】後,日後即不再要求使用者授權,同樣的,功能也無法正常執行了。你能想像IG不能上傳照片嗎?這樣的APP下場只有被移除一途了。有沒有可能使用者第二次【拒絕】授權且勾選【不要再詢問】後,APP還能透過其他方式取得使用者授權呢?

Google推出另一個好用的類別庫easypermissions,即是為了解決此一困擾。

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

Add easypermissions dependencies

開啟build.gradle (Module)加入依賴

實作EasyPermissions.PermissionCallbacks

複寫兩個必要方法 onPermissionsGranted 、onPermissionDeniend

本例為單一授權,意即僅授權CALL_PHONE (請參考Android 6.0的Permission權限設計),倘若APP需多項危險權限授權,請在下列各方法中判斷是否已授權/未授權。

  • 要求授權

第3行 : 判斷是否已授權APP權限,第二個參數可加入多個權限。

第6-11行 : 第一次要求授權遭拒,第二次請求授權時會執行此段程式,提醒使用者此項授權的必要性,即Rational — 曉以大義。

  • 覆寫 onRequestPermissionsResult

Android 6.0以後執行階段取得使用者授權、或被使用者拒絕後,會執行onRequestPermissionsResult(),在此將授權回應交由EasyPermissions類別處理

  • 拒絕授權

實作EasyPermissions.PermissionCallbacks的必要方法onPermissionsDenied()

第3行 : 判斷使用者是否勾選【不要再顯示】

第4行 : 開啟應用程式設定畫面,讓使用者可手動允許權限

  • 使用者手動允許授權

當執行 new AppSettingsDialog.Builder(this).build().show; ,使用者手動允許授權後,APP做何反應。

  • 允許授權

實作EasyPermissions.PermissionCallbacks的必要方法onPermissionsGranted()

執行結果

這樣一來,就解決了使用者第二次要求授權時勾選【不要再詢問】且【拒絕】授權後,APP無法再次請求授權的困擾了。

❈ 此文所提供之要求授權流程僅為示例,要求授權、再次請求授權等流程及訊息,可視實務需求調整。

 

相關文章:

發表迴響

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