kitkat(API 19)插入联系人?

时间:2014-07-17 22:53:42

标签: android android-contacts android-4.4-kitkat

在搜索了几乎整个互联网之后,我对此问题感到非常头疼。除了API 19 KitKat(Google Nexus)之外,我还有适用于任何API的代码。这是添加/插入联系人到设备的典型代码。任何人都有任何想法,为什么这不起作用?

ArrayList<ContentProviderOperation> op_list = new ArrayList<ContentProviderOperation>();

        ContentProviderOperation.Builder builder = ContentProviderOperation
                .newInsert(RawContacts.CONTENT_URI);
        builder.withValue(RawContacts.ACCOUNT_NAME,
                appData.getAccount().name);
        builder.withValue(RawContacts.ACCOUNT_TYPE,
                appData.getAccount().type);
        builder.withValue(RawContacts.SYNC1, user.getName());
        op_list.add(builder.build());

        builder = ContentProviderOperation
                .newInsert(ContactsContract.Data.CONTENT_URI);
        builder.withValueBackReference(
                ContactsContract.CommonDataKinds.StructuredName.RAW_CONTACT_ID,
                0);
        builder.withValue(
                ContactsContract.Data.MIMETYPE,
                ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
        builder.withValue(
                ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
                user.getName());
        op_list.add(builder.build());

        builder = ContentProviderOperation
                .newInsert(ContactsContract.Data.CONTENT_URI);
        builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);
        builder.withValue(ContactsContract.Data.MIMETYPE,
                "vnd.android.cursor.item/customMimeType");
        builder.withValue(ContactsContract.Data.DATA1, user.getID());
        builder.withValue(ContactsContract.Data.DATA2, "Profile");
        builder.withValue(ContactsContract.Data.DATA3, "Send message");
        builder.withValue(Data.DATA10, user.getID());
        op_list.add(builder.build());

        try {
            contentResolver.applyBatch(ContactsContract.AUTHORITY, op_list);
        } catch (Exception e) {
            e.printStackTrace();
        }

不会抛出异常,但插入后无法在联系人列表中找到联系人。

1 个答案:

答案 0 :(得分:0)

尽量不要使用DATA3列(它具有用于android框架MIME类型的LABEL别名)。我会将MIMETYPE更改为与框架MIME类型完全不同的内容,例如 org.myprog.app/mycustomType