前言

在 Android M 之後,要求權限需要呼叫  ActivityCompat.requestPermissions ,APP 會跳出視窗請求使用者允許權限。

然而,如果使用者要求「不要再詢問」,就無法跳出視窗詢問權限了,因此必須判斷如果無法再詢問時,要提示使用者在設定頁面手動開啟權限。

 

備註:本文章不討論如何要求權限的細節。

要求權限流程

要求權限流程圖

如圖所示,本文章的主旨是要討論「如果使用者要求不要再詢問權限,APP 應該要引導使用者,開啟設定頁面,讓使用者手動開啟權限」。


然而,Android SDK 並沒有直接提供「使用者是否要求不要再詢問」的資訊,因此我們必須稍微更複雜地進行這個功能。

要求權限流程圖

Android SDK 提供了  shouldShowRequestPermissionRationale 方法,該方法表示系統認為是否該為此權限提供更多說明讓使用者了解。

 

然而,實際上該方法回傳的機制如下:

  • 如果系統第一次要求該權限,方法回傳 false。
  • 如果使用者拒絕過該權限,該方法回傳 true。
  • 如果使用者拒絕過該權限,並且要求「不要再詢問」,該方法會回傳 false。

 

所以為了判斷是否「不要再詢問」,除了需要呼叫此方法,還需要自行判斷 APP 是否第一次要求該權限,才能正確判斷使用者是否要求了「不要再詢問」。

範例程式片段

FBLINETwitterLinkIn
回部落格