我使用以下代码:
ArrayList<ContentValues> data = new ArrayList<ContentValues>();
ContentValues name = new ContentValues();
name.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);
name.put(StructuredName.GIVEN_NAME, "first name");
name.put(StructuredName.FAMILY_NAME, "last name");
data.add(name);
ContentValues row2 = new ContentValues();
row2.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
row2.put(Email.TYPE, Email.TYPE_CUSTOM);
row2.put(Email.LABEL, "Green Bot");
row2.put(Email.ADDRESS, "android@android.com");
data.add(row2);
Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
intent.putParcelableArrayListExtra(Insert.DATA, data);
startActivity(intent);
但是,只添加了电子邮件。名称字段设置为空。
更新 地址也一样!
ContentValues address = new ContentValues();
address.put(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE);
address.put(StructuredPostal.CITY, "Nasr City");
address.put(StructuredPostal.COUNTRY, "Egypt");
address.put(StructuredPostal.REGION, "Cairo");
address.put(StructuredPostal.TYPE, StructuredPostal.TYPE_WORK);
data.add(address);
电子邮件,电话号码,网站,即时消息和照片都可以正常使用。
答案 0 :(得分:0)
试试这个
//添加联系人
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation
.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
.build());
ops.add(ContentProviderOperation
.newInsert(ContactsContract.Data.CONTENT_URI)
.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
.withValue(
ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
.withValue(
ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME,
Name)
.withValue(
ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME,
FirstName)
.withValue(
ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME,
LastName).build());
try {
ContentProviderResult[] personid = getContentResolver().applyBatch(
ContactsContract.AUTHORITY, ops);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (OperationApplicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 1 :(得分:0)
最后我在意图
中添加了额外的额外内容Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
intent.putParcelableArrayListExtra(Insert.DATA, data);
intent.putExtra(Intents.Insert.POSTAL, "addrees");
intent.putExtra(Intents.Insert.NAME, "name");
startActivity(intent);
它对我有用。仅用于添加名称,但我无法添加名字,姓氏等。