Pemilih Kontak Android

Pemilih Kontak Android menyediakan antarmuka standar yang menjaga privasi yang memungkinkan pengguna membagikan kontak tertentu ke aplikasi. Diperkenalkan di Android 17, fitur ini berfungsi sebagai alternatif tanpa izin untuk izin READ_CONTACTS yang luas.

Dengan menggunakan Pemilih Kontak, aplikasi dapat meminta akses ke data kontak tertentu, seperti nomor telepon atau alamat email. Pengguna memilih kontak yang ingin dibagikan, dan sistem memberikan akses baca sementara ke aplikasi hanya untuk detail tersebut.

Arsitektur

Pemilih Kontak terdiri dari dua komponen utama:

  • Aplikasi UI pemilih: Komponen ini berfungsi sebagai antarmuka yang terlihat oleh pengguna untuk memilih kontak.
  • Penyedia sesi: Komponen ini bertindak sebagai layanan backend yang mengelola sesi akses sementara.

Diagram urutan Pemilih Kontak

Gambar 1. Diagram urutan

UI Pemilih

UI Pemilih menangani antarmuka pengguna untuk pemilihan kontak dan mengkueri penyedia kontak secara langsung untuk mengisi tampilan berdasarkan jenis data yang diminta. Tampilan yang didukung meliputi:

  • Khusus nomor telepon: UI menampilkan kontak yang berisi nomor telepon.
  • Khusus email: UI menampilkan kontak yang berisi alamat email.
  • Informasi kontak kustom: UI menampilkan kontak yang cocok dengan kolom data yang diminta tertentu.

Selain itu, UI mendukung fitur berikut:

  • Daftar yang diurutkan menurut abjad: Kontak diurutkan menurut abjad dengan penghapusan duplikat.
  • Avatar kontak: UI menampilkan foto atau avatar kontak.
  • Favorit: Kategori Favorit ditampilkan di bagian atas daftar kontak.
  • Pengalih profil: Fitur ini memungkinkan pengguna memilih kontak dari profil pengguna yang berbeda (misalnya, Kerja vs. Pribadi).
  • Pilihan tunggal dan banyak: Sistem mendukung mode pilihan tunggal dan banyak (batas default adalah 50 dan maksimumnya adalah 100).
  • Pratinjau pilihan: Pengguna dapat melihat pratinjau dan mengelola kontak yang dipilih sebelum mengonfirmasi.
  • Scrolling cepat: Fitur ini memungkinkan navigasi cepat melalui daftar kontak.
  • Penelusuran: Kotak penelusuran disediakan untuk menemukan kontak tertentu.
  • Banner privasi dan halaman detail privasi: Pemberitahuan wajib memberi tahu pengguna secara tepat kolom data mana (misalnya, nomor telepon, email) yang diminta oleh aplikasi.

Penyedia sesi

Penyedia sesi (packages/providers/ContactsProvider) bertindak sebagai perantara yang aman antara aplikasi klien dan penyedia kontak.

  • Peran: Gunakan penyedia sesi hanya saat Anda meluncurkan pemilih menggunakan Intent.ACTION_PICK_CONTACTS.
  • Pengelolaan sesi: Saat pengguna memilih kontak, UI pemilih akan menulis data pilihan (dipetakan ke UID klien) ke penyedia sesi.
  • Akses data: Penyedia menampilkan URI content://com.android.providers.contacts.picker.sessions ke pemilih. Pemilih menerapkan tanda baca yang sesuai sebelum menampilkan URI ke aplikasi klien. URI ini memberikan akses baca yang mendetail dan sementara ke kolom data tertentu yang dipilih pengguna, tanpa mengekspos semua data kontak.
  • Akses istimewa: Izin tanda tangan dan hak istimewa android.permission.MANAGE_CONTACTS_PICKER_SESSION melindungi akses tulis ke provider sesi, sehingga hanya pemilih bawaan sistem tepercaya yang dapat membuat sesi.

Integrasi

Produsen dan partner hardware harus menyertakan Pemilih Kontak Android dalam build dengan Android 17 dan yang lebih tinggi.

Intent yang didukung

  • Intent.ACTION_PICK_CONTACTS: Intent yang direkomendasikan untuk aplikasi yang menargetkan Android 17 dan yang lebih tinggi.
  • Intent.ACTION_PICK: Dipertahankan untuk kompatibilitas mundur. Sistem secara otomatis merutekan permintaan ini ke pemilih baru untuk jenis MIME yang didukung (email, telepon, atau kontak).

Pengelolaan sesi

Untuk menjaga kesehatan dan privasi perangkat, penyedia sesi menerapkan kebijakan pembersihan data yang ketat:

  • Tugas pembersihan: Tugas sistem (CleanupJobService) berjalan secara berkala untuk menghapus data sesi yang lebih lama dari 24 jam.
  • Batas baris: Untuk mencegah penggunaan penyimpanan yang berlebihan, tabel penyedia sesi dibatasi hingga maksimum 5.000 baris. Jika tabel mencapai ukuran ini, sistem akan otomatis memangkas baris terlama sebelum memasukkan data sesi baru.
  • Persistensi: Data sesi bersifat sementara. Aplikasi klien diharapkan untuk mempertahankan data kontak yang ditampilkan segera setelah diterima.

Izin

Akses tulis ke penyedia sesi memerlukan izin android.permission.MANAGE_CONTACTS_PICKER_SESSION, yang dibatasi untuk paket Pemilih Kontak Android.

Penyesuaian dan kepatuhan

Partner dapat menyesuaikan elemen visual seperti font dan warna, tetapi implementasi harus mematuhi CDD Android bagian 3.18.2 (TBD).

Validasi

Partner harus memverifikasi penerapan mereka menggunakan Compatibility Test Suite (CTS) dan Google Mobile Services Test Suite (GTS).