Thông tin về nhà cung cấp danh bạ và mối quan hệ

Bắt đầu từ Android 10, dữ liệu liên quan đến sở thích liên hệ, được quản lý bởi thành phần Nhà cung cấp Danh bạ (nguồn dữ liệu thấy trong ứng dụng danh bạ của thiết bị), được truy cập khác với Android 9 trở xuống.

Trước Android 10, các ứng dụng đã sử dụng Trình cung cấp Danh bạ để truy cập và truyền dữ liệu giữa thiết bị và các dịch vụ trực tuyến. Android 10 có những thay đổi liên quan đến khả năng truy cập dữ liệu để đảm bảo quyền riêng tư của người dùng được tăng cường trên tất cả các thiết bị Android 10 sử dụng Nhà cung cấp Danh bạ. Đầu tiên, cơ sở dữ liệu cơ bản không chứa dữ liệu về mối quan hệ liên hệ. Do đó, ứng dụng không thể ghi hoặc đọc từ nó. Những thay đổi bao gồm những điều sau đây:

  • Nhà cung cấp Danh bạ không ghi lại dữ liệu liên quan đến sở thích liên hệ, chẳng hạn như số lần người dùng được liên hệ, lần liên hệ cuối cùng, ứng dụng được sử dụng, người được liên hệ hoặc bất kỳ dữ liệu lịch sử liên quan nào.
  • Lớp MultiAutoCompleteTextView trong API tự động hoàn thành của Nhà cung cấp Danh bạ không sắp xếp kết quả truy vấn theo bộ đếm tương tác.
  • Khung Android không cung cấp xếp hạng liên hệ ngầm định. (Tuy nhiên, xếp hạng liên hệ rõ ràng , do người dùng kiểm soát (chẳng hạn như liên hệ được gắn dấu sao ) vẫn được duy trì).

Để thực hiện những thay đổi này, hãy thực hiện một trong các thao tác sau:

  • Sử dụng Nhà cung cấp Danh bạ mới nhất.
  • Cập nhật phiên bản của bạn (nếu bạn đang sử dụng phiên bản rẽ nhánh).

Ngoài ra, hãy cập nhật mọi ứng dụng dựa trên các tính năng của Nhà cung cấp Danh bạ không còn được dùng nữa. Không cho phép các phiên bản API được thiết kế để giải quyết các chức năng không được dùng nữa.

Đối với Android 9 trở xuống, dữ liệu tương tác liên hệ từ Nhà cung cấp Danh bạ chưa bị xóa. Thay vào đó, dữ liệu tương tác liên hệ sẽ bị xóa định kỳ (khoảng một lần mỗi ngày) để mô phỏng tương đương trong Android 10. Nhà cung cấp Danh bạ lưu trữ thông tin này nhưng chỉ tạm thời.

Thay đổi API

Những thay đổi này dự kiến ​​sẽ có tác động lớn đến API. Ví dụ: xếp hạng tự động hoàn thành cũng sẽ không hoạt động. Các tác động tiềm ẩn đối với hoạt động của API bao gồm:

  • Nhà cung cấp Danh bạ sẽ không lưu trữ các tùy chọn hoặc tương tác của người dùng với liên hệ đó trong các cột của bảng ContactsContract.Contacts .
  • API tự động hoàn thành sẽ không sắp xếp kết quả theo bộ đếm tương tác.
  • Các cột TIMES_CONTACTED / TIMES_USEDLAST_TIME_CONTACTED / LAST_TIME_USED sẽ không được cập nhật.
    • Những thông số này sẽ bị xóa (thành null hoặc được đặt thành 0, tùy thuộc vào các cột bị ảnh hưởng) khi nâng cấp lên Android 10.
    • Xếp hạng trong API truy vấn tự động hoàn thành trả về kết quả được sắp xếp theo thứ tự bảng chữ cái, không bao giờ theo thông tin sở thích.
    • Lệnh gọi API dành cho những người liên hệ thường xuyên (ví dụ: sử dụng chuỗi bộ lọc CONTENT_FREQUENT_URI ) không trả lại kết quả.

Nói chung, nếu bất kỳ thành phần API Nhà cung cấp Danh bạ nào không được dùng nữa sử dụng bộ đếm thì các bộ đếm đó (khi được sử dụng trong Android 10) sẽ chứa 0 và trả về 0 khi được truy vấn. Yêu cầu cập nhật từ các API bị ảnh hưởng sẽ bị bỏ qua. Ví dụ: lớp ContactsContract.DataUsageFeedback không còn được dùng nữa nên các lệnh gọi cập nhật và xóa đối với lớp này sẽ bị bỏ qua.

Các trường tác động đến API

Các trường này đã thay đổi trong Android 10:

Các trường bị ảnh hưởng trong Android 10 có thể xuất hiện trong các API khác nhau, như được chỉ ra trong bảng bên dưới. Các trường API không được dùng nữa sẽ trả về các hành vi như được liệt kê. Vì một trong những trường không được dùng nữa này có thể được sử dụng trong một số API của bạn, nên hãy xác minh các trường hợp sử dụng của bạn.

Lớp học trường API 10 lần trả lại
ContactsContract.Contacts
ContactsContract.RawContacts
ContactsContract.Data
ContactsContract.Entity
ContactOptionsColumns
TIMES_CONTACTED
LAST_TIME_CONTACTED
Các cột này luôn chứa số 0, bất kể chúng được sử dụng như thế nào. Những nỗ lực sửa đổi chúng đều bị bỏ qua.
Contacts markAsContacted() Không hoạt động.
ContactsContract.DataUsageFeedback

update
delete

Không hoạt động.
ContactsContract.Contacts Thường xuyên ( được gắn dấu sao + thường xuyên)
CONTENT_STREQUENT_FILTER_URI
CONTENT_STREQUENT_URI
CONTENT_FREQUENT_URI
Chỉ trả về các liên hệ được gắn dấu sao . Không có liên hệ thường xuyên nào được trả lại.
ContactsContract.CommonDataKinds.Email
ContactsContract.CommonDataKinds.Phone
ContactsContract.CommonDataKinds.Callable
API bộ lọc (còn gọi là tự động hoàn thành)

CONTENT_FILTER_URI
ENTERPRISE_CONTENT_FILTER_URI

Kết quả không được sắp xếp theo mối quan hệ. Chúng được sắp xếp theo dấu saotên .

Lựa chọn thay thế

Không có lựa chọn thay thế nào cho các trường API không được dùng nữa. Không được phép sử dụng các giải pháp được thiết kế để tránh những hạn chế này, dù ở dạng API mới hay trường mới.

Thực hiện

Bạn không cần phải làm gì để thực hiện những thay đổi này. Chúng là một phần của sáng kiến ​​nhằm tăng cường quyền riêng tư của người dùng trên nền tảng hệ điều hành Android. Tuy nhiên, nếu ứng dụng của bạn dựa vào các tính năng không còn được dùng nữa thì bạn có thể muốn cập nhật ứng dụng của mình để bù đắp cho mọi thay đổi. Ngoài ra, nếu bạn sử dụng phiên bản phân nhánh của Nhà cung cấp Danh bạ, bạn phải cập nhật Nhà cung cấp Danh bạ của mình.

Không tùy chỉnh

Không tùy chỉnh hoặc xử lý những thay đổi về thông tin mối quan hệ của người liên hệ. Chúng được tích hợp vào khuôn khổ và việc thực hiện bất kỳ thay đổi nào sẽ khiến bạn không tuân thủ. Không bao giờ thay đổi cài đặt mặc định hoặc cung cấp các lựa chọn thay thế cửa sau.