如何通过使用code导入从VCF文件联系人联系人、文件、code、VCF

2023-09-05 05:07:51 作者:ERosIon 腐朽

我必须创建一个包含联系人使用此code一个VCF文件

i have create a vcf file that contains contacts by using this code

ContentResolver cr = getContentResolver();
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
String lookupKey = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
                        Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_VCARD_URI, lookupKey);
                        System.out.println("The value is " + cr.getType(uri));
                        AssetFileDescriptor fd = this.getContentResolver().openAssetFileDescriptor(uri, "r");
                        FileInputStream fis = fd.createInputStream();

我如何能够通过code导入此文件到设备中?

how can i import this file into the device by code?

推荐答案

在网上搜索导入联系人最好的办法后如下:

After searching the Web the best way to import contacts is as follows

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
             int rawContactInsertIndex = ops.size();
             ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
                      .withValue(RawContacts.ACCOUNT_TYPE,null)
                      .withValue(RawContacts.ACCOUNT_NAME, null)
                      .withValue(RawContacts.STARRED, Starred)
                      .withValue(RawContacts.CUSTOM_RINGTONE, CustRingTone)
                      .build());

             ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
                      .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
                      .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
                      .withValue(StructuredName.DISPLAY_NAME, displayName)
                      .withValue(StructuredName.PHONETIC_GIVEN_NAME, PhoneticName_First)
                      .withValue(StructuredName.PHONETIC_MIDDLE_NAME, PhoneticName_Middle)
                      .withValue(StructuredName.PHONETIC_FAMILY_NAME, PhoneticName_Last)
                      .build());

             for (RowData phone : phones) {
                 ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
                          .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
                          .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE)
                          .withValue(Phone.NUMBER, phone.data)
                          .withValue(Phone.TYPE, phone.type)
                          .withValue(Phone.LABEL, phone.customLabel)
                          .build());
                }