将联系人写入联系人数据库 - Android 2.1

发布于 2024-09-09 01:26:34 字数 1774 浏览 1 评论 0原文

我正在尝试将新联系人写入 Android 2.1 中的联系人数据库。但我收到以下错误:

java.lang.UnsupportedOperationException: Aggregate contacts are created automatically.

我已在清单中添加了以下字段:

<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />

这是我的代码:

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

String accountType = null;
String accountName = null;

Builder builder = ContentProviderOperation.newInsert(
ContactsContract.Contacts.CONTENT_URI);
builder.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType);
builder.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, accountName);

ContentProviderOperation op = builder.build();
Log.i("contacts", "op.getUri(): " + op.getUri());
ops.add(op);

ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
    .withValueBackReference(
        ContactsContract.Data.RAW_CONTACT_ID,
        ops.size()
    )
    .withValue(
        ContactsContract.Data.MIMETYPE,
        StructuredName.CONTENT_ITEM_TYPE
    )
    .withValue(StructuredName.DISPLAY_NAME, contact.getFullName())
    .build()
);

ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
    .withValueBackReference(
        ContactsContract.Data.RAW_CONTACT_ID,
        ops.size()
    )
    .withValue(
        ContactsContract.Data.MIMETYPE,
        ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
    )
    .withValue(
        ContactsContract.CommonDataKinds.Phone.NUMBER,
        contact.getPhoneNumber()
    )
    .build()
);

try {
    this.cr.applyBatch(ContactsContract.AUTHORITY, ops);
}

I'm trying to write a new contact to the contact database in Android 2.1. But I am getting the following error:

java.lang.UnsupportedOperationException: Aggregate contacts are created automatically.

I have added the following fields in the manifest:

<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />

This is my code:

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

String accountType = null;
String accountName = null;

Builder builder = ContentProviderOperation.newInsert(
ContactsContract.Contacts.CONTENT_URI);
builder.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType);
builder.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, accountName);

ContentProviderOperation op = builder.build();
Log.i("contacts", "op.getUri(): " + op.getUri());
ops.add(op);

ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
    .withValueBackReference(
        ContactsContract.Data.RAW_CONTACT_ID,
        ops.size()
    )
    .withValue(
        ContactsContract.Data.MIMETYPE,
        StructuredName.CONTENT_ITEM_TYPE
    )
    .withValue(StructuredName.DISPLAY_NAME, contact.getFullName())
    .build()
);

ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
    .withValueBackReference(
        ContactsContract.Data.RAW_CONTACT_ID,
        ops.size()
    )
    .withValue(
        ContactsContract.Data.MIMETYPE,
        ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
    )
    .withValue(
        ContactsContract.CommonDataKinds.Phone.NUMBER,
        contact.getPhoneNumber()
    )
    .build()
);

try {
    this.cr.applyBatch(ContactsContract.AUTHORITY, ops);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

俏︾媚 2024-09-16 01:26:34
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rowContactInsertIndex).withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE).withValue(Phone.NUMBER, cPhone).withValue(Phone.TYPE, cPhoneType).build());

这可能对你有帮助。对全名、电话和电子邮件也执行相同的操作

ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rowContactInsertIndex).withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE).withValue(Phone.NUMBER, cPhone).withValue(Phone.TYPE, cPhoneType).build());

this might help you. do same for full name, phone and email too

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文