Add one contact with multiple numbers Android programmatically

青春壹個敷衍的年華 提交于 2019-12-30 13:01:10

问题


How to add one contact with multiple numbers on android phone programmatically?


回答1:


This is how we can do this

pass Name and Array of numbers to this method.

 public static void addToContactList(Context context, String strDisplayName, String[] strNumber) throws Exception {

    ArrayList<ContentProviderOperation> cntProOper = new ArrayList<>();
    int contactIndex = cntProOper.size();//ContactSize
    ContentResolver contactHelper = context.getContentResolver();

   cntProOper.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)//Step1
            .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
            .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null).build());

    //Display name will be inserted in ContactsContract.Data table
    cntProOper.add(ContentProviderOperation.newInsert(android.provider.ContactsContract.Data.CONTENT_URI)//Step2
            .withValueBackReference(android.provider.ContactsContract.Data.RAW_CONTACT_ID, contactIndex)
            .withValue(android.provider.ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
            .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, strDisplayName) // Name of the contact
            .build());

    for (String s : strNumber) {
        //Mobile number will be inserted in ContactsContract.Data table
        cntProOper.add(ContentProviderOperation.newInsert(android.provider.ContactsContract.Data.CONTENT_URI)//Step 3
                .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, contactIndex)
                .withValue(android.provider.ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
                .withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, s) // Number to be added
                .withValue(ContactsContract.CommonDataKinds.Phone.TYPE, ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE).build()); //Type like HOME, MOBILE etc
    }

    ContentProviderResult[] s = context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, cntProOper); //apply above data insertion into contacts list

    for (ContentProviderResult r : s) {
        Log.i(TAG, "addToContactList: " + r.uri);
    }
}


来源:https://stackoverflow.com/questions/43612029/add-one-contact-with-multiple-numbers-android-programmatically

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!