三州位置權限

Android 10 中的三態位置權限使用戶可以更好地控制應用程式存取其裝置位置的方式。

在 Android 9 及更低版本中,使用者在向應用程式授予位置存取權限時做出了持久的選擇。他們可以拒絕允許,後者始終允許應用程式存取(前台和後台)。 Android 10 中的三態位置權限為使用者提供了三種允許應用程式存取裝置位置的選項。當應用程式請求權限等級時,系統會提示使用者授予或拒絕權限等級。

使用者通常會看到圖 1 中顯示的三個選項。但是,在某些用例中只需要其中兩個選項,並且在這種情況下僅顯示這兩個選項。

Tristate location permissions screen
圖 1.三態通知螢幕

這是三個選項:

  • 始終允許:即使應用程式未使用(在背景運行),應用程式也知道設備的位置。這相當於在 Android 9 及更低版本中允許權限。
  • 僅在應用程式正在使用時允許:(僅限前台)裝置的位置僅在應用程式主動運行時可見。
  • 拒絕:設備的位置對應用程式永遠不可見。這與 Android 9 及更低版本中拒絕權限相同。

當套用請求權限時,系統會提示使用者授予位置存取權限。

一旦使用者授予「僅在應用程式正在使用時允許」存取權限,應用程式就可以請求增量增加「始終允許」的存取權限。使用者會看到一個請求對話框(如圖 2所示)。如果使用者選擇「保留使用中存取權限」 ,則當應用程式在下次使用時存取裝置位置時,該對話方塊將提供「保留且不再詢問」選項。

對於面向 Android 10 的應用程序,該對話框會在以下條件下出現:

  • 授予許可至少 24 小時後。
  • 僅當應用程式在背景接收位置時。
  • 當螢幕開啟且使用者未使用其他應用程式時。
Incremental permissions
圖 2.增量權限

要了解有關請求權限的更多信息,請參閱應用程式存取設備位置。有關詳細資訊(如果您的應用程式面向 Android 9 及更低版本),請參閱繼續用戶啟動的操作

影響

三態位置權限功能會影響任何在後台運行時需要設備位置訪問的應用程序,並且在 Android 10 中是必需的。

您可以更改程式碼,但不能更改或自訂框架中與權限相關的行為。

執行

三態位置權限適用於 Android 10 中的應用,無論應用程式的目標 SDK 是什麼。

有關實現應用程式用例(升級)的信息,請參閱開發人員文件中的裝置升級場景設計部分。

若要了解如何啟用不同用例的存取權限(例如需要 Google 地圖或 Google Play 服務等應用程式的後台位置存取權限),請在應用程式存取裝置位置頁面上查看以下主題:

應用程式內位置訪問

使用者可以選擇將應用程式的存取權限變更為「拒絕」或「僅在使用應用程式時允許」 。對於應用程式內位置存取權限以及所有第一方和第三方應用,請提供下表中給出的使用者控制等級。

權限類型app需要請求提供的使用者選項
應用程式僅請求前台權限僅在使用應用程式時允許
否定
應用程式始終請求權限(前台和後台)允許所有時間
僅在使用應用程式時允許
否定
所有有位置存取請求的應用僅在使用應用程式時允許

這些權限適用於所有位置請求。僅在使用應用程式權限時才允許的應用程式不允許進行背景 Wi-Fi 或手機掃描。

在 Android 11 或更低版本上,僅在使用應用程式權限時才允許的應用程式不允許進行背景藍牙掃描。從 Android 12 開始,僅在使用應用程式權限時才允許的應用程式可以透過將android:usesPermissionFlags屬性的值設為neverForLocation來取得藍牙掃描結果。有關更多詳細信息,請參閱應用程式無法獲取物理位置

作業系統升級

在作業系統升級到 Android 10 時,應用程式位置權限將根據以下內容進行轉換:

  • On變成Allow only while in Use
  • 關閉保持關閉(拒絕)。
  • 預先授予的位置存取權限變為「僅在使用預授予時允許」