Yêu cầu quyền truy cập vào dữ liệu cảm biến cơ thể khi ở nền sau

Android 13 và Wear OS 4 giới thiệu một cách để các ứng dụng truy cập vào cảm biến cơ thể (chẳng hạn như nhịp tim) ở chế độ nền. Mô hình truy cập mới này tương tự như mô hình đã ra mắt tính năng quyền truy cập thông tin vị trí ở chế độ nền trong Android 10 (API cấp 29).

Nếu ứng dụng của bạn cần truy cập vào thông tin của cảm biến cơ thể ở chế độ nền, chẳng hạn như khi theo dõi dữ liệu Dịch vụ sức khoẻ ở chế độ nền, thì bạn phải yêu cầu quyền BODY_SENSORS_BACKGROUND.

Như đã mô tả trên trang các phương pháp hay nhất về quyền riêng tư, ứng dụng chỉ nên yêu cầu cấp quyền BODY_SENSORS_BACKGROUND khi quyền đó quan trọng đối với tính năng giao diện người dùng, đồng thời ứng dụng phải công bố thông tin này đúng cách cho người dùng.

Quy trình cấp quyền này phụ thuộc vào phiên bản SDK mục tiêu của ứng dụng.

Ứng dụng nhắm đến Android 13 trở lên

Ngoài quyền BODY_SENSORS hiện có, hãy khai báo quyền BODY_SENSORS_BACKGROUND trong tệp kê khai:

<uses-permission android:name="android.permission.BODY_SENSORS">
<uses-permission android:name="android.permission.BODY_SENSORS_BACKGROUND">

Sau đó, ứng dụng phải yêu cầu cấp quyền trong các hoạt động riêng biệt:

  1. Kiểm tra xem BODY_SENSORS đã được cấp hay chưa. Nếu chưa, hãy yêu cầu cấp quyền.
  2. Kiểm tra xem BODY_SENSORS_BACKGROUND đã được cấp hay chưa. Nếu chưa, hãy yêu cầu cấp quyền.
Tuỳ chọn quyền truy cập mọi lúc là mục danh sách đầu tiên trên màn hình cài đặt
Hình 1. Chế độ cài đặt cảm biến bao gồm một tuỳ chọn có tên là Mọi lúc để cấp quyền truy cập vào dữ liệu cảm biến trong nền.

Thận trọng: Nếu ứng dụng của bạn yêu cầu cả hai quyền đối với cảm biến cơ thể cùng một lúc, thì hệ thống sẽ bỏ qua yêu cầu đó và không cấp quyền nào cho ứng dụng.

Trên Android 13 (API cấp 33) trở lên, hộp thoại cấp quyền khi bắt đầu chạy không bao gồm tuỳ chọn "Luôn cho phép". Thay vào đó, người dùng phải luôn bật quyền truy cập vào cảm biến nền trong phần cài đặt hệ thống, như minh hoạ trong hình 1. Khi yêu cầu quyền BODY_SENSORS_BACKGROUND sau khi cấp quyền BODY_SENSORS, bạn có thể giúp người dùng chuyển đến trang cài đặt này. Nếu người dùng từ chối quyền truy cập mọi lúc, họ có thể tiếp tục dùng ứng dụng của bạn.

Ứng dụng nhắm đến một phiên bản cũ

Văn bản liên kết là &quot;chuyển đến phần cài đặt&quot;
Hình 2. Hộp thoại cấp quyền chứa một đường liên kết để chuyển người dùng đến quyền cảm biến của ứng dụng trong phần cài đặt hệ thống.

Khi ứng dụng của bạn nhắm đến một phiên bản Android cũ hơn Android 13, quyền truy cập khi ở chế độ nền sẽ không được tự động cấp khi bạn yêu cầu quyền BODY_SENSORS. Thay vào đó, người dùng sẽ thấy một hộp thoại hệ thống mời người dùng chuyển đến phần cài đặt quyền đối với cảm biến của ứng dụng, như minh hoạ trong hình 2. Sau đó, người dùng phải cho phép sử dụng cảm biến trong nền trên trang cài đặt đó.

Người dùng có thể từ chối quyền truy cập khi ở nền sau. Cách này có tác dụng tương tự như việc thu hồi quyền BODY_SENSORS khi ứng dụng đang chạy ở chế độ nền. Khi một ứng dụng đang dùng PassiveMonitoringClient mà không có quyền truy cập khi ở nền sau và chuyển sang chạy ở chế độ nền, ứng dụng đó sẽ mất quyền BODY_SENSORS và lệnh gọi lại onPermissionLost() sẽ được thực hiện. Vì những lý do này, bạn đặc biệt nên làm theo các phương pháp hay nhất để yêu cầu quyền khi bắt đầu chạy.