Tristate 位置存取權

Android 10 中的三態位置存取權可讓使用者進一步控管應用程式存取裝置位置資訊的方式。

在 Android 9 以下版本中,使用者在授予應用程式位置存取權時,會做出永久性的選擇。您可以選擇「拒絕」或「允許」,後者會讓應用程式一律取得存取權 (前景和背景)。Android 10 中的三態位置資訊存取權可讓使用者選擇三種選項,允許應用程式存取裝置的位置資訊。應用程式要求權限時,系統會提示使用者授予或拒絕該權限層級。

使用者通常會看到圖 1 所示的三個選項。不過,在某些用途中,您只需要這兩種選項,在這種情況下,系統只會顯示這兩種選項。

三態位置存取權畫面

圖 1. 三態通知畫面。

三個選項如下:

  • 「一律允許」:即使您未使用應用程式 (在背景執行),應用程式仍可取得裝置的位置資訊。這相當於在 Android 9 以下版本中允許權限。
  • 僅在使用該應用程式時允許:(僅限前景) 只有在應用程式正在執行時,應用程式才能看到裝置的位置資訊。
  • 拒絕:應用程式永遠無法存取裝置的位置資訊。這與在 Android 9 以下版本中拒絕權限相同。

應用程式要求位置存取權時,系統會提示使用者授予權限。

使用者授予「僅在使用該應用程式時允許」存取權後,應用程式可以要求逐漸提升存取權,直到「隨時允許」為止。使用者會看到要求對話方塊 (如圖 2 所示)。如果使用者選取「保留使用期間的存取權」,應用程式下次使用時存取裝置位置時,對話方塊會提供「保留並不再詢問」選項。

針對指定 Android 10 為目標版本的應用程式,對話方塊會在下列情況下顯示:

  • 授予權限後至少 24 小時。
  • 只有在應用程式在背景接收位置資訊時才會發生。
  • 螢幕開啟且使用者未使用其他應用程式時。
增量權限

圖 2. 增量權限。

如要進一步瞭解如何要求權限,請參閱「應用程式存取裝置位置資訊」。如果您的應用程式指定 Android 9 以下版本為目標,請參閱「 繼續執行使用者啟動的動作」一文。

影響

三態位置資訊存取權功能會影響所有需要在背景執行時存取裝置位置資訊的應用程式,且在 Android 10 中為必備。

您可以變更程式碼,但不得變更或自訂架構中的權限相關行為。

實作

三態位置資訊權限會套用至 Android 10 中的應用程式,無論應用程式的目標 SDK 為何。

如要瞭解如何在升級時實作應用程式的用途,請參閱開發人員說明文件中的「 為裝置升級情境進行設計」一節。

如要瞭解如何為不同用途啟用存取權 (例如,為 Google 地圖或 Google Play 服務等應用程式啟用背景位置資訊存取權),請參閱「應用程式存取裝置位置資訊」頁面中的以下主題:

應用程式內的位置資訊存取權

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

應用程式需要要求的權限類型 提供的使用者選項
應用程式僅要求前景權限 僅在使用該應用程式時允許
拒絕
應用程式一律要求權限 (前景和背景) 一律允許
僅在使用該應用程式時允許
拒絕
所有提出位置存取權要求的應用程式 僅在使用應用程式時允許

這些權限適用於所有位置要求。具有「僅在使用該應用程式時允許」權限的應用程式,無法在背景執行 Wi-Fi 或行動網路掃描。

在 Android 11 以下版本中,如果應用程式具有「僅在使用該應用程式時允許」權限,則無法進行背景藍牙掃描。自 Android 12 起,具有「僅在使用該應用程式時允許」權限的應用程式,只要將 android:usesPermissionFlags 屬性的值設為 neverForLocation,即可取得藍牙掃描結果。詳情請參閱「應用程式未擷取實際位置資訊」。

作業系統升級

在升級至 Android 10 的作業系統上,應用程式位置存取權會根據下列方式轉譯:

  • 「開啟」會變成「僅在使用時允許」
  • 保持「關閉」(「拒絕」)。
  • 預先授予的位置存取權會變成「僅在使用時允許」預先授權。