Quyền khi bắt đầu chạy trong Android 6 trở lên cho phép người dùng kiểm soát thời điểm họ cho phép ghi âm thanh từ micrô của thiết bị hoặc ghi video từ máy ảnh của thiết bị. Trước khi một ứng dụng có thể ghi âm, người dùng phải cấp hoặc từ chối quyền ghi âm cho ứng dụng đó thông qua hộp thoại mà hệ thống hiển thị.
Android 12 mang đến cho người dùng sự minh bạch bằng cách hiển thị các chỉ báo khi một ứng dụng sử dụng nguồn dữ liệu riêng tư thông qua quyền hoạt động của ứng dụng đối với máy ảnh và micrô. App-ops ghi lại các quyền truy cập vào các API được bảo vệ bằng quyền khi bắt đầu chạy.
App-op theo dõi cả trạng thái hoạt động và số lượng lệnh gọi API riêng lẻ, đồng thời tương tác với chỉ báo micrô và máy ảnh trong Android 12 để cho người dùng biết thời điểm các ứng dụng đã truy cập vào dữ liệu âm thanh và máy ảnh trên thiết bị của họ. Khi người dùng nhấp vào chỉ báo micrô hoặc máy ảnh, họ sẽ thấy những ứng dụng nào đã truy cập vào dữ liệu của họ. Tất cả nhà sản xuất thiết bị gốc (OEM) đều bắt buộc phải có tính năng này.
Yêu cầu về chế độ hiển thị chỉ báo
Sau đây là các yêu cầu đối với chỉ báo micrô và máy ảnh trên các thiết bị chạy Android 12 trở lên:
- Các chỉ báo phải xuất hiện trong thanh trạng thái và giữ nguyên mức độ ưu tiên hình ảnh cao nhất (ví dụ: nằm ở vị trí ngoài cùng bên phải ở góc trên cùng bên phải).
- Các chỉ báo phải được đặt ở cùng một vị trí một cách nhất quán và không được ứng dụng chặn khi khởi chạy.
- Cả hai chỉ báo phải có màu xanh lục (hoặc một biến thể của màu xanh lục).
- Khi nhấp vào một hoặc cả hai chỉ báo, hệ thống phải hiển thị thông báo về khả năng phân bổ ứng dụng thực hiện những việc sau:
- Hiển thị tên của ứng dụng đang sử dụng micrô và (hoặc) máy ảnh
- Hiển thị tên của ứng dụng đã sử dụng micrô và (hoặc) máy ảnh trong 15 giây qua
- Chuyển người dùng đến trang quyền cho ứng dụng trong phần Cài đặt
Cách sử dụng và tính năng
Trong Android 12, giao diện người dùng phân biệt giữa các lần sử dụng đang chạy và các lần sử dụng gần đây. Lượt sử dụng được coi là đang hoạt động nếu hệ thống đánh dấu là đang chạy hoặc mới diễn ra chưa đến 5 giây.
- Biểu tượng trên thanh trạng thái xuất hiện mỗi khi một ứng dụng đang có quyền truy cập vào micrô hoặc máy ảnh liên quan đến thông tin nhạy cảm của người dùng.
- Người dùng có thể nhấp vào các biểu tượng này để xem những ứng dụng nào đang truy cập vào micrô, máy ảnh hoặc cả hai.
Hình 1. Chỉ báo đang sử dụng micrô và máy ảnh cho biết quyền truy cập đang hoạt động (góc trên cùng bên phải)
Quyền truy cập được coi là đang hoạt động miễn là các chỉ báo hiển thị. Trước tiên, một biểu tượng sẽ hiển thị, sau đó chuyển đổi thành một dấu chấm xuất hiện liên tục cho đến khi ứng dụng bị đóng hoặc bị loại bỏ.
Khi người dùng mở trình đơn Cài đặt nhanh rồi nhấn vào các chỉ báo, một hộp thoại sẽ xuất hiện cho biết ứng dụng đang sử dụng máy ảnh, micrô hay cả hai.
Hình 2. Chỉ báo truy cập gần đây và đang hoạt động
Hình ảnh trong Hình 2 cho thấy các chỉ báo truy cập đang hoạt động khi một ứng dụng đang chạy truy cập vào dữ liệu trong 5 giây qua.
Chỉ báo truy cập gần đây cho biết một ứng dụng đã truy cập vào dữ liệu trong 15 giây trước đó, nhưng ứng dụng đó không hoạt động. Tất cả ứng dụng đang hoạt động đều xuất hiện trong hộp thoại, nhưng chỉ một ứng dụng xuất hiện dưới dạng nguồn truy cập gần đây, ngay cả khi có nhiều ứng dụng truy cập vào dữ liệu trong khung thời gian 15 giây trước đó. Chế độ xem quyền truy cập vẫn bị treo cho đến khi người dùng đóng hộp thoại thông báo.
Phân phối và bật
Lớp PermissionManager
cung cấp một phương thức để điền sẵn hộp thoại nằm trong Giao diện người dùng hệ thống.
- Giao diện người dùng hệ thống phản ứng với nút chuyển cấu hình thiết bị:
privacy/mic_camera_indicators_enabled
. - Bạn cần phải chuyển đổi vì có hai phương tiện phân phối riêng biệt, theo thứ tự này:
- Phân phối.
- Bật.
- Giao diện người dùng hệ thống không được gặp sự cố nếu phương thức trong
PermissionManager
không thể cung cấp dữ liệu cần thiết.
Quy trình xử lý
Chức năng của Chỉ báo quyền có ba phần chính:
- Ứng dụng
- Các chỉ báo (do SystemUI xử lý)
- Cách xác định ứng dụng nào đang sử dụng dữ liệu
PermissionController
cung cấp cơ chế để xác định ứng dụng nào đang sử dụng dữ liệu. SystemUI theo dõi các ứng dụng sử dụng dữ liệu riêng tư. SystemUI hiển thị một biểu tượng trong thanh điều hướng trên cùng tương ứng với các quyền được sử dụng. PermissionController
hiển thị dữ liệu về mức sử dụng khi người dùng nhấp vào một biểu tượng.
Hình 3. Luồng chuyển đổi (UI) và thành phần hệ thống
Các quá trình chuyển đổi được đánh số trong Hình 3 được mô tả dưới đây:
1- Một ứng dụng yêu cầu dữ liệu riêng tư từ hệ thống.
2- Hệ thống kiểm tra quyền. Nếu cho phép các quyền này, hệ thống sẽ thông báo cho nhà cung cấp dữ liệu và ghi lại mức sử dụng trong các hoạt động của ứng dụng
3- Nhà cung cấp dữ liệu cung cấp dữ liệu cho ứng dụng.
4-5 Người dùng nhấp vào các biểu tượng. Giao diện người dùng hệ thống yêu cầu dữ liệu từ PermissionManager
và hiển thị hộp thoại cho người dùng.
Thông tin chi tiết về quy trình
- Các ứng dụng sử dụng micrô và máy ảnh, gọi
AppOpsManager.startOp
,stopOp
và (hoặc)noteOp
. Thao tác này sẽ tạo các bản ghi hoạt động của ứng dụng trong máy chủ hệ thống. - Giao diện người dùng hệ thống sẽ theo dõi các thao tác mới của ứng dụng bằng trình nghe
AppOpsManager.OnOpActiveChangedInternalListener
vàOnOpNotedListener
. Khi có một lượt sử dụng mới (thông qua lệnh gọi đếnstartOp
hoặcnoteOp
), Giao diện người dùng hệ thống sẽ xác minh rằng lượt sử dụng đó là của một ứng dụng hệ thống. - Nếu Giao diện người dùng hệ thống xác minh việc sử dụng ứng dụng hệ thống và nếu việc sử dụng đó là cho micrô, thì Giao diện người dùng hệ thống sẽ kiểm tra xem micrô có bị tắt tiếng hay không.
- Nếu Giao diện người dùng hệ thống xác minh việc sử dụng ứng dụng không phải hệ thống (và đối với việc sử dụng micrô, micrô đã bật; đối với việc sử dụng máy ảnh, máy ảnh đã bật), thì giao diện này sẽ hiển thị một biểu tượng phản ánh việc sử dụng đó.
Nếu Giao diện người dùng hệ thống nhận được noteOp
không có thời lượng, thì giao diện này sẽ hiển thị biểu tượng trong ít nhất 5 giây. Nếu không, biểu tượng sẽ hiển thị cho đến khi nhận được stopOp
hoặc trong 5 giây, tuỳ theo thời gian nào dài hơn. Khi người dùng nhấp vào một biểu tượng, một ý định sẽ được khởi tạo và chuyển đến PermissionController
để bắt đầu Hộp thoại.
PermissionController
tải tất cả các lần sử dụng gần đây đối với micrô và máy ảnh. Phương thức này kiểm tra xem có bất kỳ hoạt động nào trong số đó đang chạy hay đã chạy trong khung thời gian do Giao diện người dùng hệ thống đặt hay không. Nếu tìm thấy kết quả trùng khớp, ứng dụng sẽ hiển thị tên của ứng dụng đã sử dụng quyền và những quyền mà ứng dụng đã sử dụng.
Do thay đổi này trong Android 12 trở lên, một số ứng dụng phải thay đổi hành vi hoặc triển khai hành vi đặc biệt.
Dịch vụ điện thoại phải triển khai việc sử dụng quyền (để tính đến ngăn xếp micrô riêng biệt dùng trong cuộc gọi điện thoại), trong khi làm việc với ứng dụng Android Google Tìm kiếm (AGSA) và Dịch vụ Google dành cho thiết bị di động (GMS).