Quyền vị trí Tristate

Quyền vị trí tristate trong Android 10 cung cấp cho người dùng nhiều quyền kiểm soát hơn đối với cách ứng dụng truy cập vị trí thiết bị của họ.

Trong Android 9 trở xuống, người dùng đã đưa ra các 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 sau cho phép ứng dụng truy cập mọi lúc (nền trước và nền sau). Quyền 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ố các tùy chọn này và trong những trường hợp như vậy chỉ có hai tùy chọn đó được hiển thị.

Tristate location permissions screen
Hình 1. Màn hình thông báo Tristate

Đây là ba lựa chọn:

  • Cho phép mọi lúc : ứng dụng biết vị trí của thiết bị ngay cả khi ứng dụng không được sử dụng (chạy ở chế độ nền). Điều này tương đương với việc cấ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 ứng dụng đang chạy.
  • Từ chối : ứng dụng không bao giờ hiển thị vị trí của thiết bị. Điều này 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 cho phép quyền truy cập khi ứng dụng đang được sử dụng , ứng dụng có thể yêu cầu tăng dần quyền truy cập vào Cho phép mọi lúc . Người dùng nhìn thấy hộp thoại yêu cầu (thể hiện trong Hình 2 ). Nếu người dùng chọn Giữ quyền truy cập trong khi sử dụng thì 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 dành cho ứ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 vị trí ở chế độ nền.
  • Khi màn hình bật và người dùng không sử dụng ứng dụng khác.
Incremental permissions
Hình 2. Quyền tăng thêm

Để 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 .

Sự va chạm

Tính năng cấp phép vị trí ba trạng thái ảnh hưởng đến bất kỳ ứng dụng nào cần quyền truy cập vị trí thiết bị trong khi chạy ở chế độ nền và được yêu cầu 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 khung.

Thực hiện

Quyền vị trí ba trạng thái đượ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.

Để biết thông tin về cách triển khai các trường hợp sử dụng ứng dụng của bạn (khi nâng cấp), hãy tham khảo phần Thiết kế cho các kịch bản nâng cấp thiết bị trong tài liệu dành cho nhà phát triển.

Để biết 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í ở chế độ 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ị :

Truy cập vị trí trong ứng dụng

Người dùng có thể thay đổi quyền truy cập của ứ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. Để có quyền truy cập vị trí trong ứng dụng cũng như đối với tất cả ứng dụng của bên thứ nhất và bên thứ ba, hãy cung cấp các cấp độ 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 Tùy chọn người dùng để cung cấp
Ứng dụng chỉ yêu cầu quyền ở chế độ nền trước Chỉ cho phép khi sử dụng ứng dụng
Từ chối
Ứng dụng luôn yêu cầu quyền (nền trước và nền) Cho phép mọi lúc
Chỉ cho phép khi sử dụng ứng dụng
Từ chối
Tất cả ứng dụng có yêu cầu quyền truy cập vị trí Chỉ cho phép khi sử dụng ứng dụng

Những 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 các quyền của ứng dụng sẽ không được phép quét di động hoặc Wi-Fi trong nền.

Trên Android 11 trở xuống, các ứng dụng chỉ cho phép khi sử dụng quyền của ứng dụng sẽ không được phép quét Bluetooth trong nền. Từ Android 12, các ứng dụng chỉ cho phép 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

Khi nâng cấp hệ điều hành lên Android 10, quyền vị trí của ứng dụng sẽ dịch như sau:

  • Bật sẽ 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 sẽ trở thành quyền chỉ Cho phép khi đang sử dụng .