Cara Membuat, Mendapatkan, Menghapus, dan Update Kontak di Perangkat Android

Mengelola kontak di perangkat Android merupakan salah satu kebutuhan penting, terutama bagi pengembang aplikasi yang membutuhkan akses ke daftar kontak pengguna. Dalam artikel ini, kita akan membahas cara membuat (insert), mendapatkan (read), menghapus (delete), dan memperbarui (update) kontak di Android menggunakan Java.
1. Izin yang Diperlukan
Sebelum mengakses kontak, pastikan Anda sudah menambahkan izin berikut di file AndroidManifest.xml
:
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
Untuk Android 6.0 (Marshmallow) ke atas, Anda juga perlu meminta izin secara runtime.
2. Cara Mendapatkan Kontak (Read Contacts)
Untuk membaca semua kontak di perangkat:
public void getAllContacts(Context context) {
ContentResolver contentResolver = context.getContentResolver();
Cursor cursor = contentResolver.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
do {
String name = cursor.getString(
cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String phoneNumber = cursor.getString(
cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Log.d("Contact", "Name: " + name + ", Phone: " + phoneNumber);
} while (cursor.moveToNext());
cursor.close();
}
}
Kode di atas akan menampilkan semua kontak yang memiliki nomor telepon.
3. Cara Membuat Kontak Baru (Insert Contacts)
Untuk menambahkan kontak baru, Anda dapat menggunakan ContentProviderOperation
:
public void insertContact(Context context, String name, String phoneNumber) {
ArrayList<ContentProviderOperation> ops = new ArrayList<>();
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
.build());
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name)
.build());
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneNumber)
.withValue(ContactsContract.CommonDataKinds.Phone.TYPE,
ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)
.build());
try {
context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
Log.d("Contact", "Contact inserted: " + name);
} catch (Exception e) {
e.printStackTrace();
}
}
4. Cara Memperbarui Kontak (Update Contacts)
Jika Anda ingin memperbarui nomor telepon berdasarkan nama:
public void updateContact(Context context, String oldName, String newPhoneNumber) {
String where = ContactsContract.Data.DISPLAY_NAME + " = ? AND " +
ContactsContract.Data.MIMETYPE + " = ?";
String[] params = new String[]{oldName,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE};
ArrayList<ContentProviderOperation> ops = new ArrayList<>();
ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(where, params)
.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, newPhoneNumber)
.build());
try {
context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
Log.d("Contact", "Contact updated: " + oldName);
} catch (Exception e) {
e.printStackTrace();
}
}
5. Cara Menghapus Kontak (Delete Contacts)
Untuk menghapus kontak berdasarkan nama:
public void deleteContact(Context context, String name) {
ArrayList<ContentProviderOperation> ops = new ArrayList<>();
String where = ContactsContract.Data.DISPLAY_NAME + " = ?";
String[] params = new String[]{name};
ops.add(ContentProviderOperation.newDelete(ContactsContract.RawContacts.CONTENT_URI)
.withSelection(where, params)
.build());
try {
context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
Log.d("Contact", "Contact deleted: " + name);
} catch (Exception e) {
e.printStackTrace();
}
}
Kesimpulan
Dengan menggunakan ContactsContract di Android, Anda dapat dengan mudah melakukan operasi CRUD (Create, Read, Update, Delete) pada kontak perangkat. Pastikan Anda selalu mematuhi izin pengguna (runtime permission) dan tidak menyalahgunakan akses kontak karena privasi pengguna sangat penting.