2015-09-22 28 views
12

應用程序獲取任何廣播或任何類型的警報時,其權限設置從設置更改?我有一個場景,當應用程序啓動並獲得LOCATION GROUP權限時,我們開始某種日誌記錄。但是當用戶在我們的應用程序崩潰之間撤銷此權限時。沒有找到任何方式來停止日誌記錄時,用戶取消它。此日誌記錄來自第三方庫,因此我們不能在它們之間放置任何檢查權限檢查。在Android M權限更改廣播操作M

+0

沒有廣播,你可以做的只是檢查是否已授予權限 – tyczj

+1

這有點suxors,特別是如果你有一個服務在後臺運行* required *,提示和批准許可,但是有人會在運行時粘貼w /權限並拒絕它*。如果沒有事件被告知權限發生變化,該服務將會像平常一樣繼續運行。它必須遵循天真地推薦的對每個已批准權限的調用進行權限測試的做法。最好是抓住一個事件並暫停服務,並用一流的通知提示需要恢復權限。 – swooby

回答

18

應用程序獲取任何廣播或任何類型的警報,當其權限設置從設置更改?

沒有記錄。

如果用戶撤銷之前授予您的權限,您的過程將被終止。當你下一次運行時,你將會發現權限更改是檢查權限的一部分。

如果用戶授予之前被拒絕的權限,則您的進程爲而不是已終止。但是,再次致電checkSelfPermission()時,您會發現您有權訪問。

這裏的教訓是:不緩存權限查找結果。他們似乎是相當便宜的電話,所以只需撥打checkSelfPermission()即可。

如果您的targetSdkVersion低於23,checkSelfPermission()不會幫助,但您應該獲取虛假數據而不是SecurityException。在位置修復的情況下,如果用戶已撤銷位置訪問權限,則不應獲取任何位置信息。

但是,當用戶在應用程序之間撤銷此權限崩潰

我沒有嘗試過其中後臺服務運行方案和用戶撤銷許可。它應該終止你的過程,所以你會發現當你的服務下次運行時權限的變化。如果您發現您的流程是而不是被終止,那可能是Android中存在錯誤的跡象。

+0

其實我可以從設置/應用撤銷權限,然後切換回我的應用。 –

+0

我撤銷了權限,現在當我做ps我沒有看到進程運行,但我的應用程序仍然在最近的應用程序列表中,我可以從那裏啓動它。有沒有什麼辦法可以從最近的應用程序列表中清除它? –

+0

@SumitShrivastava:「但我的應用程序仍然存在於最近的應用程序列表中」 - 當然。在Android 5.0+上,它將永遠存在。 「有什麼辦法可以將它從最近的應用程序列表中清除嗎?」 - 當用戶在設置中切換權限時不會有任何方法。請解釋您的應用出現在概覽/近期應用程序屏幕中導致的問題。 – CommonsWare