三州位置權限

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 中是必需的。

你可以改變你的代碼,但你可能不會改變或框架定制許可相關的行為。

執行

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

有關實現您的應用程序的使用情況(上升級)的信息,請參閱設計用於設備升級方案的開發者文檔中的部分。

要了解如何啟用不同的使用情況下訪問(如要求對像谷歌地圖或谷歌Play服務應用程式的背景位置訪問),查看有關這些主題應用程序訪問設備位置頁面:

應用內位置訪問

用戶可以改變你的應用程序的訪問權限,拒絕只在使用應用程序,如果他們選擇允許。對於應用內位置訪問權限,以及所有第一方和第三方應用,提供下表中給出的用戶控制級別。

權限類型應用需要請求提供的用戶選項
應用僅請求前台權限僅在使用應用程序時允許
否定
應用程序總是請求許可(前台和後台)一直允許
僅在使用應用程序時允許
否定
所有具有位置訪問請求的應用僅在使用應用程序時允許

這些權限適用於所有位置請求。與應用程序只允許同時使用應用權限不允許背景Wi-Fi或小區掃描。

在Android上11或更低,與應用程序只有在使用應用程序的權限不允許背景藍牙掃描允許。從Android的12,與應用程序只有在使用應用程序的權限可以通過設置的值獲得藍牙掃描結果允許android:usesPermissionFlags屬性neverForLocation 。有關詳細信息,請參閱應用程序並不會帶來任何物理位置

操作系統升級

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

  • 成為只允許同時使用
  • 保持關閉狀態(拒絕)。
  • 授予的預位置訪問變得只,而在使用的預批的允許