Android 筆記 permissions 之 shouldShowRequestPermissionRationale()
阿新 • • 發佈:2019-02-10
permissions
在6.0時代,需要在程式執行時獲取相關許可權,展開一個對話方塊詢問是否授予該程式相應許可權。
從第二次開始執行的時候,會增加一個選項框,“以後不再詢問”,如果選擇了這個選項,那麼以後程式不會再詢問是否授予許可權了。
這時候選擇了確認倒還好,之後倒方便了。
如果選擇了拒絕,那之後也不會顯示對話方塊,但是許可權一直是拒絕的。這樣是非常不好的體驗,不知道的還以為程式崩潰了。
所以,我們需要在這個時候也顯示相應對話方塊來告訴使用者
shouldShowRequestPermissionRationale()
這個方法是AppCompact裡面的,用於許可權管理
為了幫助查詢使用者可能需要解釋的情形,Android 提供了一個實用程式方法,即 shouldShowRequestPermissionRationale()。如果應用之前請求過此許可權但使用者拒絕了請求,此方法將返回 true。
注:如果使用者在過去拒絕了許可權請求,並在許可權請求系統對話方塊中選擇了 Don’t ask again 選項,此方法將返回 false。如果裝置規範禁止應用具有該許可權,此方法也會返回 false。
這是官網裡面的解釋。所以,如果使用者選擇了拒絕並且不再提醒,那麼這個方法會返回false,通過這一點,就可以在適當的時候展開一個對話方塊,告訴使用者到底發生了什麼,需要怎麼做。
實際測試中發現,這個時候如果直接呼叫requestPermissions()
也沒用,因為剛才說了,已經選擇不再提醒了。所以,需要告訴使用者怎麼開啟許可權:在app資訊介面可以選擇並控制所有的許可權。