Quyền vị trí Tristate trong Android 10 cho phép người dùng kiểm soát nhiều hơn cách ứng dụng truy cập vào vị trí thiết bị của họ.
Trong Android 9 trở xuống, người dùng đã có những lựa chọn liên tục khi cấp quyền truy cập vị trí cho các ứng dụng. Họ có thể Từ chối hoặc Cho phép , tùy chọn này cấp cho ứng dụng quyền truy cập mọi lúc (nền trước và nền sau). Quyền truy cập vị trí Tristate trong Android 10 cung cấp cho người dùng ba tùy chọn để cho phép ứng dụng truy cập vào vị trí của thiết bị. Người dùng được nhắc cấp hoặc từ chối cấp độ quyền khi ứng dụng yêu cầu.
Người dùng thường thấy ba lựa chọn được trình bày trong Hình 1. Tuy nhiên, có những trường hợp sử dụng chỉ yêu cầu hai trong số những tùy chọn này và trong những trường hợp đó, chỉ hai lựa chọn đó được hiển thị.

Đây là ba tùy chọn:
- Cho phép mọi lúc : vị trí của thiết bị được ứng dụng biết ngay cả khi ứng dụng không được sử dụng (đang chạy trong nền). Điều này tương đương với việc cho phép quyền trong Android 9 trở xuống.
- Chỉ cho phép khi ứng dụng đang được sử dụng : (chỉ ở nền trước) vị trí của thiết bị chỉ hiển thị với ứng dụng khi nó đang hoạt động.
- Từ chối : vị trí của thiết bị không bao giờ hiển thị với ứng dụng. Điều này cũng giống như việc từ chối quyền trong Android 9 trở xuống.
Người dùng được nhắc cấp quyền truy cập vị trí khi ứng dụng yêu cầu quyền.
Sau khi người dùng chỉ cấp Quyền trong khi ứng dụng đang sử dụng quyền truy cập, ứng dụng có thể yêu cầu tăng quyền truy cập vào Cho phép mọi lúc . Người dùng sẽ thấy một hộp thoại yêu cầu (trong Hình 2 ). Nếu người dùng chọn Giữ quyền truy cập khi đang sử dụng , khi ứng dụng truy cập vào vị trí thiết bị trong lần sử dụng tiếp theo, hộp thoại sẽ cung cấp tùy chọn Giữ và không hỏi lại .
Hộp thoại xuất hiện trong các điều kiện sau cho các ứng dụng nhắm mục tiêu Android 10:
- Sau ít nhất 24 giờ kể từ khi cấp phép.
- Chỉ khi ứng dụng đang nhận các vị trí trong nền.
- Khi màn hình bật và người dùng không sử dụng ứng dụng khác.

Để tìm hiểu thêm về cách yêu cầu quyền, hãy xem Ứng dụng truy cập vào vị trí thiết bị . Để biết chi tiết nếu ứng dụng của bạn nhắm mục tiêu Android 9 trở xuống, hãy xem Tiếp tục hành động do người dùng thực hiện .
Va chạm
Tính năng cấp quyền vị trí của bộ ba ảnh hưởng đến bất kỳ ứng dụng nào cần quyền truy cập vị trí thiết bị khi đang chạy trong nền và bắt buộc phải có trong Android 10.
Bạn có thể thay đổi mã của mình nhưng bạn không được thay đổi hoặc tùy chỉnh hành vi liên quan đến quyền trong khuôn khổ.
Thực hiện
Quyền vị trí Tristate được áp dụng cho các ứng dụng trong Android 10 bất kể SDK mục tiêu của ứng dụng là gì.
Để biết thông tin về cách triển khai các trường hợp sử dụng của ứng dụng (khi nâng cấp), hãy tham khảo phần Thiết kế cho các tình huống nâng cấp thiết bị trong tài liệu dành cho nhà phát triển.
Để xem cách bật quyền truy cập cho các trường hợp sử dụng khác nhau (chẳng hạn như yêu cầu quyền truy cập vị trí nền cho các ứng dụng như Google Maps hoặc dịch vụ Google Play), hãy xem các chủ đề này trên trang Quyền truy cập ứng dụng vào vị trí thiết bị :
Quyền truy cập vị trí trong ứng dụng
Người dùng có thể thay đổi quyền truy cập ứng dụng của bạn thành Từ chối hoặc Chỉ cho phép trong khi sử dụng ứng dụng nếu họ chọn. Đối với quyền truy cập vị trí trong ứng dụng và đối với tất cả các ứng dụng của bên thứ nhất và bên thứ ba, hãy cung cấp các mức kiểm soát của người dùng được đưa ra trong bảng sau.
Ứng dụng loại quyền cần yêu cầu | Các tùy chọn người dùng cung cấp |
---|---|
Ứng dụng chỉ yêu cầu quyền ở nền trước | Chỉ cho phép khi sử dụng ứng dụng Phủ nhận |
Ứng dụng luôn yêu cầu quyền (nền trước và nền sau) | Cho phép mọi lúc Chỉ cho phép khi sử dụng ứng dụng Phủ nhận |
Tất cả các ứng dụng có yêu cầu quyền truy cập thông tin vị trí | Chỉ cho phép khi sử dụng ứng dụng |
Các quyền này áp dụng cho tất cả các yêu cầu vị trí. Các ứng dụng chỉ Cho phép khi sử dụng quyền ứng dụng không được phép quét di động hoặc Wi-Fi nền.
Trên Android 11 trở xuống, các ứng dụng chỉ Cho phép khi sử dụng quyền ứng dụng không được phép quét Bluetooth nền. Từ Android 12, các ứng dụng chỉ Cho phép trong khi sử dụng quyền ứng dụng có thể nhận được kết quả quét Bluetooth bằng cách đặt giá trị của thuộc android:usesPermissionFlags
thành neverForLocation
. Để biết thêm chi tiết, hãy xem Ứng dụng không lấy được vị trí thực tế .
Nâng cấp hệ điều hành
Trên bản nâng cấp hệ điều hành lên Android 10, quyền vị trí ứng dụng dịch theo như sau:
- Bật trở thành Chỉ cho phép khi đang Sử dụng .
- Tắt vẫn tắt ( Từ chối ).
- Quyền truy cập vị trí được cấp trước trở thành cấp trước chỉ Cho phép khi đang sử dụng .