Informasi penyedia kontak dan minat

Mulai Android 10, data terkait afinitas kontak, yang dikelola oleh komponen Penyedia Kontak (sumber data yang terlihat di aplikasi kontak perangkat), diakses secara berbeda dari pada Android 9 dan yang lebih lama.

Sebelum Android 10, aplikasi menggunakan Penyedia Kontak untuk mengakses data dan mentransfernya antara perangkat dan layanan online. Android 10 menampilkan perubahan terkait aksesibilitas data untuk memastikan peningkatan privasi pengguna di semua perangkat Android 10 yang menggunakan Penyedia Kontak. Pertama, database pokok tidak berisi data afinitas kontak. Oleh karena itu, aplikasi tidak dapat menulis ke atau membaca darinya. Perubahan tersebut meliputi:

  • Penyedia Kontak tidak mencatat data terkait minat kontak, seperti berapa kali pengguna dihubungi, terakhir kali kontak, aplikasi yang digunakan, orang yang dihubungi, atau data historis terkait.
  • Class MultiAutoCompleteTextView di API Autocomplete Penyedia Kontak tidak mengurutkan hasil kueri menurut penghitung interaksi.
  • Framework Android tidak menyediakan peringkat kontak implisit. (Namun, peringkat kontak vulgar yang dikontrol pengguna (seperti kontak berbintang) tetap ada).

Untuk menerapkan perubahan ini, lakukan salah satu hal berikut:

  • Gunakan Penyedia Kontak terbaru.
  • Update versi Anda (jika Anda menggunakan versi bercabang).

Selain itu, update aplikasi apa pun yang mengandalkan fitur Penyedia Kontak yang tidak digunakan lagi. Versi API yang dirancang untuk menjadi solusi untuk fungsi yang tidak digunakan lagi tidak diizinkan.

Untuk Android 9 dan yang lebih lama, data interaksi kontak dari Penyedia Kontak belum dihapus. Sebagai gantinya, data interaksi kontak dihapus secara berkala (sekitar sekali per hari) untuk menyimulasikan hal yang setara di Android 10. Penyedia Kontak menyimpan informasi ini, tetapi hanya untuk sementara.

Perubahan API

Perubahan ini diperkirakan akan berdampak besar pada API. Misalnya, peringkat pelengkapan otomatis tidak akan berperforma sebaik itu. Potensi dampak pada perilaku API meliputi hal berikut:

  • Penyedia Kontak tidak akan menyimpan preferensi pengguna untuk, atau interaksi dengan, kontak di kolom tabel ContactsContract.Contacts.
  • Autocomplete API tidak akan mengurutkan hasil menurut penghitung interaksi.
  • Kolom TIMES_CONTACTED / TIMES_USED dan LAST_TIME_CONTACTED / LAST_TIME_USED tidak akan diperbarui.
    • Nilai ini akan dihapus (ke null atau ditetapkan ke 0, bergantung pada kolom yang terpengaruh) setelah mengupgrade ke Android 10.
    • Peringkat di API kueri pelengkapan otomatis menampilkan hasil yang diurutkan alfabetis, bukan berdasarkan informasi afinitas.
    • Panggilan API untuk kontak yang sering digunakan (misalnya, menggunakan string filter CONTENT_FREQUENT_URI) tidak menampilkan hasil.

Umumnya, jika ada elemen Contact Provider API yang tidak digunakan lagi menggunakan penghitung, penghitung tersebut (jika digunakan di Android 10) berisi 0, dan menampilkan 0 saat dikueri. Permintaan pembaruan dari API yang terpengaruh akan diabaikan. Misalnya, class ContactsContract.DataUsageFeedback tidak digunakan lagi, sehingga panggilan update dan hapus ke class ini akan diabaikan.

Kolom yang memengaruhi API

Kolom ini telah berubah di Android 10:

Kolom yang terpengaruh di Android 10 mungkin ada di API yang berbeda, seperti yang ditunjukkan dalam tabel di bawah. Kolom API yang tidak digunakan lagi menampilkan perilaku seperti yang tercantum. Karena salah satu kolom yang tidak digunakan lagi ini mungkin digunakan di beberapa API Anda, verifikasi kasus penggunaan Anda.

Class Kolom API 10 hasil
ContactsContract.Contacts
ContactsContract.RawContacts
ContactsContract.Data
ContactsContract.Entity
ContactOptionsColumns
TIMES_CONTACTED
LAST_TIME_CONTACTED
Kolom ini selalu berisi 0, terlepas dari cara penggunaannya. Upaya untuk mengubahnya akan diabaikan.
Contacts markAsContacted() Tidak ada operasi.
ContactsContract.DataUsageFeedback

update
delete

Tidak ada operasi.
ContactsContract.Contacts Strequent (berbintang + sering)
CONTENT_STREQUENT_FILTER_URI
CONTENT_STREQUENT_URI
CONTENT_FREQUENT_URI
Hanya menampilkan kontak yang berbintang. Tidak ada kontak yang sering dihubungi.
ContactsContract.CommonDataKinds.Email
ContactsContract.CommonDataKinds.Phone
ContactsContract.CommonDataKinds.Callable
API filter (juga disebut autocomplete)

CONTENT_FILTER_URI
ENTERPRISE_CONTENT_FILTER_URI

Hasil tidak diurutkan berdasarkan afinitas. Video ini diurutkan menurut diberi bintang dan nama.

Alternatif

Tidak ada alternatif untuk kolom API yang tidak digunakan lagi. Solusi yang dirancang untuk menghindari batasan ini, baik dalam bentuk API baru atau kolom baru, tidak diizinkan.

Implementasi

Anda tidak perlu melakukan apa pun untuk menerapkan perubahan ini. Fitur ini merupakan bagian dari inisiatif untuk meningkatkan privasi pengguna di platform Android OS. Namun, jika aplikasi Anda mengandalkan fitur yang tidak digunakan lagi, Anda dapat mengupdate aplikasi untuk mengimbangi perubahan apa pun. Selain itu, jika Anda menggunakan versi forked Penyedia Kontak, Anda harus mengupdate Penyedia Kontak.

Tidak ada penyesuaian

Jangan menyesuaikan atau mengakali perubahan informasi afinitas kontak. Pembatasan ini sudah terintegrasi dalam framework, dan membuat perubahan apa pun akan membuat Anda tidak mematuhi persyaratan. Jangan pernah mengubah setelan default atau memberikan alternatif backdoor.