Trình chọn người liên hệ cho Android

Trình chọn người liên hệ trên Android cung cấp một giao diện tiêu chuẩn, bảo vệ quyền riêng tư, cho phép người dùng chia sẻ người liên hệ cụ thể với các ứng dụng. Ra mắt trong Android 17, tính năng này đóng vai trò là một giải pháp thay thế không cần quyền cho quyền READ_CONTACTS rộng.

Khi sử dụng Trình chọn người liên hệ, các ứng dụng có thể yêu cầu quyền truy cập vào dữ liệu người liên hệ cụ thể, chẳng hạn như số điện thoại hoặc địa chỉ email. Người dùng chọn người liên hệ mà họ muốn chia sẻ và hệ thống sẽ cấp cho ứng dụng quyền đọc tạm thời chỉ đối với những thông tin chi tiết đó.

Kiến trúc

Trình chọn người liên hệ bao gồm 2 thành phần chính:

  • Ứng dụng giao diện người dùng của trình chọn: Thành phần này đóng vai trò là giao diện hướng đến người dùng để chọn người liên hệ.
  • Nhà cung cấp phiên: Thành phần này đóng vai trò là dịch vụ phụ trợ quản lý phiên truy cập tạm thời.

Sơ đồ trình tự của Trình chọn người liên hệ

Hình 1. Sơ đồ trình tự

Giao diện người dùng của trình chọn

Giao diện người dùng của trình chọn xử lý giao diện người dùng để chọn người liên hệ và trực tiếp truy vấn nhà cung cấp người liên hệ để điền vào các khung hiển thị dựa trên các loại dữ liệu được yêu cầu. Các khung hiển thị được hỗ trợ bao gồm:

  • Chỉ số điện thoại: Giao diện người dùng hiển thị người liên hệ có chứa số điện thoại.
  • Chỉ email: Giao diện người dùng hiển thị người liên hệ có chứa địa chỉ email.
  • Thông tin liên hệ tuỳ chỉnh: Giao diện người dùng hiển thị người liên hệ khớp với các trường dữ liệu cụ thể được yêu cầu.

Ngoài ra, giao diện người dùng còn hỗ trợ các tính năng sau:

  • Danh sách được sắp xếp theo bảng chữ cái: Người liên hệ được sắp xếp theo bảng chữ cái và loại bỏ các mục trùng lặp.
  • Hình đại diện của người liên hệ: Giao diện người dùng hiển thị ảnh hoặc hình đại diện của người liên hệ.
  • Mục yêu thích: Danh mục Mục yêu thích xuất hiện ở đầu danh sách người liên hệ.
  • Trình chuyển đổi hồ sơ: Tính năng này cho phép người dùng chọn người liên hệ từ các hồ sơ người dùng khác nhau (ví dụ: Công việc so với Riêng tư).
  • Chọn một và nhiều mục: Hệ thống hỗ trợ cả chế độ chọn một và nhiều mục (giới hạn mặc định là 50 và tối đa là 100).
  • Xem trước lựa chọn: Người dùng có thể xem trước và quản lý người liên hệ đã chọn trước khi xác nhận.
  • Di chuyển nhanh: Tính năng này cho phép bạn di chuyển nhanh qua danh sách người liên hệ.
  • Tìm kiếm: Thanh tìm kiếm được cung cấp để tìm người liên hệ cụ thể.
  • Biểu ngữ về quyền riêng tư và trang chi tiết về quyền riêng tư: Thông báo bắt buộc cho người dùng biết chính xác những trường dữ liệu (ví dụ: số điện thoại, email) mà ứng dụng đang yêu cầu.

Nhà cung cấp phiên

Nhà cung cấp phiên (packages/providers/ContactsProvider) đóng vai trò là trung gian an toàn giữa ứng dụng khách và nhà cung cấp người liên hệ.

  • Vai trò: Chỉ sử dụng nhà cung cấp phiên khi bạn chạy trình chọn bằng Intent.ACTION_PICK_CONTACTS.
  • Quản lý phiên: Khi người dùng chọn người liên hệ, giao diện người dùng của trình chọn sẽ ghi dữ liệu lựa chọn (được liên kết với UID của ứng dụng khách) vào nhà cung cấp phiên.
  • Quyền truy cập dữ liệu: Nhà cung cấp trả về URI content://com.android.providers.contacts.picker.sessions cho trình chọn. Trình chọn áp dụng các cờ đọc thích hợp trước khi trả về URI cho ứng dụng khách. URI này cấp quyền đọc tạm thời, chi tiết cho các trường dữ liệu cụ thể mà người dùng đã chọn, mà không tiết lộ tất cả dữ liệu của người liên hệ.
  • Quyền truy cập đặc quyền: Chữ ký android.permission.MANAGE_CONTACTS_PICKER_SESSION và các quyền đặc quyền bảo vệ quyền ghi vào nhà cung cấp phiên, đảm bảo chỉ trình chọn hệ thống đáng tin cậy mới có thể tạo phiên.

Hoạt động tích hợp

Các nhà sản xuất và đối tác phần cứng phải đưa Trình chọn người liên hệ trên Android vào các bản dựng chạy Android 17 trở lên.

Ý định được hỗ trợ

  • Intent.ACTION_PICK_CONTACTS: Ý định được đề xuất cho các ứng dụng nhắm đến Android 17 trở lên.
  • Intent.ACTION_PICK: Duy trì để tương thích ngược. Hệ thống sẽ tự động chuyển các yêu cầu này đến trình chọn mới cho các loại MIME được hỗ trợ (email, điện thoại hoặc người liên hệ).

Quản lý phiên

Để duy trì tình trạng thiết bị và quyền riêng tư, nhà cung cấp phiên sẽ thực thi chính sách dọn dẹp dữ liệu nghiêm ngặt:

  • Công việc dọn dẹp: Công việc hệ thống (CleanupJobService) chạy định kỳ để xoá dữ liệu phiên cũ hơn 24 giờ.
  • Giới hạn hàng: Để ngăn việc sử dụng quá nhiều bộ nhớ, bảng nhà cung cấp phiên bị giới hạn tối đa 5000 hàng. Nếu bảng đạt đến kích thước này, hệ thống sẽ tự động cắt bớt các hàng cũ nhất trước khi chèn dữ liệu phiên mới.
  • Tính liên tục: Dữ liệu phiên là tạm thời. Các ứng dụng khách dự kiến sẽ lưu giữ dữ liệu người liên hệ được trả về ngay khi nhận được.

Quyền

Quyền ghi vào nhà cung cấp phiên yêu cầu quyền android.permission.MANAGE_CONTACTS_PICKER_SESSION, quyền này chỉ dành cho gói Trình chọn người liên hệ trên Android.

Tuỳ chỉnh và tuân thủ

Đối tác có thể tuỳ chỉnh các thành phần trực quan như phông chữ và màu sắc, nhưng việc triển khai phải tuân thủ phần 3.18.2 của CDD Android (TBD).

Xác nhận kết quả

Đối tác phải xác minh việc triển khai bằng cả Bộ kiểm tra tính tương thích (CTS) và Bộ kiểm tra Các dịch vụ của Google dành cho thiết bị di động (GTS).