Lorem ipsum dolor sit amet, consectetur adipiscing elit. Test link

ContactUploader Class in Android

ContactUploader Class in Android

how to upload phone contacts to Firebase using Android Studio and the Firebase Realtime Database


import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.provider.ContactsContract;
import android.util.Log;

import androidx.annotation.NonNull;

import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

import java.util.ArrayList;
import java.util.List;

public class ContactUploader {

    private static final String TAG = "ContactUploader";
    private DatabaseReference mDatabase;

    public ContactUploader(@NonNull Context context) {
        mDatabase = FirebaseDatabase.getInstance().getReference();
        uploadContacts(context);
    }

    private void uploadContacts(@NonNull Context context) {
        List<Contact> contacts = getContacts(context);
        for (Contact contact : contacts) {
            String key = mDatabase.child("contacts").push().getKey();
            mDatabase.child("contacts").child(key).setValue(contact);
            Log.d(TAG, "Contact uploaded: " + contact.getName());
        }
    }

    private List<Contact> getContacts(@NonNull Context context) {
        List<Contact> contacts = new ArrayList<>();
        ContentResolver contentResolver = context.getContentResolver();
        Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI,
                null, null, null, null);
        if (cursor != null && cursor.getCount() > 0) {
            while (cursor.moveToNext()) {
                String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
                String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                Contact contact = new Contact(id, name);
                Cursor phoneCursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                        null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
                        new String[]{id}, null);
                if (phoneCursor != null && phoneCursor.getCount() > 0) {
                    while (phoneCursor.moveToNext()) {
                        String phone = phoneCursor.getString(phoneCursor.getColumnIndex(
                                ContactsContract.CommonDataKinds.Phone.NUMBER));
                        contact.addPhoneNumber(phone);
                    }
                    phoneCursor.close();
                }
                contacts.add(contact);
            }
            cursor.close();
        }
        return contacts;
    }

}

        

The Contact class is a simple POJO that represents a contact with a name and one or more phone numbers:


public class Contact {

    private String id;
    private String name;
    private List<String> phoneNumbers;

    public Contact(@NonNull String id, @NonNull String name) {
        this.id = id;
        this.name = name;
        this.phoneNumbers = new ArrayList<>();
    }

    public String getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public List<String> getPhoneNumbers() {
        return phoneNumbers;
    }

    public void addPhoneNumber(@NonNull String phoneNumber) {
        phoneNumbers.add(phoneNumber);
    }

}
  
   

Finally, you can create an instance of the ContactUploader class in your activity or fragment to upload the contacts to Firebase:


  ContactUploader contactUploader = new ContactUploader(this);

   

Post a Comment