android - 以编程方式添加一个具有多个Android号码的联系人

标签 android android-contacts

如何以编程方式在安卓手机上添加一个联系人与多个号码?

最佳答案

这就是我们可以做到的

将名称和数字数组传递给此方法。

 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);
    }
}

关于android - 以编程方式添加一个具有多个Android号码的联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43612029/

相关文章:

android - 在android中的 Canvas 上的圆线上绘制矩形

java - 如何在电子邮件正文中嵌入图像 - Android

java - 适用于 Android 的 Google 联系人 API

Android:如何找出内容解析器的客户端

android - android pushwoosh他方法'java.io.File android.support.v4.content.ContextCompat

android - 导航编辑器初始化失败

android:largeHeap ="true"约定?

android - 获取所有联系人并获取所有类型的单个联系人姓名

java - 如何从 onItemClicklistener 上的联系人 ListView 获取 phone_Number

android - 如何重新安装 android 联系人应用程序以替换原来的应用程序进行调试?