将联系人写入联系人数据库 - Android 2.1
我正在尝试将新联系人写入 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这可能对你有帮助。对全名、电话和电子邮件也执行相同的操作
this might help you. do same for full name, phone and email too