在Android中使用ContactsContract插入联系人

我正在尝试直接向Android 2.2联系人添加新联系人。

//this code doesn't work ContentValues cv=new ContentValues(); cv.put(ContactsContract.Contacts.DISPLAY_NAME, "TESTEST"); Uri u= getContentResolver().insert(ContactsContract.Contacts.CONTENT_URI, cv); 

给我错误“自动创建聚合联系人”。 我究竟做错了什么?

这会调用Android的添加联系人表单

 //this code works but it's not ideal Intent i = new Intent(Intent.ACTION_INSERT_OR_EDIT); i.setType(Contacts.CONTENT_ITEM_TYPE); i.putExtra(Insert.NAME, "TESTTEST"); i.putExtra(Insert.PHONE, "209384"); startActivity(i); 

我无法弄清楚如何发送它的名字和姓氏 – 只是它放在名字框中的’名字’。 此外,我想将邮政编码分为街道,城市,州和邮政编码,现在这些编码都被放入街道邮箱。

在android中添加联系人详细信息

 import java.util.ArrayList; import android.app.Activity; import android.content.ContentProviderOperation; import android.content.ContentProviderResult; import android.content.OperationApplicationException; import android.net.Uri; import android.os.Bundle; import android.os.RemoteException; import android.provider.ContactsContract; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.CommonDataKinds.StructuredName; import android.provider.ContactsContract.Contacts.Data; import android.provider.ContactsContract.RawContacts; public class DemoAddAddressBook extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /* * Uri newPerson = addContactName(); * * addMobilePhoneNo(newPerson); addEmail(newPerson); * addPostalAddress(newPerson); addOrganization(newPerson); */ ArrayList ops = new ArrayList(); int rawContactInsertIndex = ops.size(); ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) .withValue(RawContacts.ACCOUNT_TYPE, null) .withValue(RawContacts.ACCOUNT_NAME, null).build()); //Phone Number ops.add(ContentProviderOperation .newInsert(ContactsContract.Data.CONTENT_URI) .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) .withValue(Phone.NUMBER, "9X-XXXXXXXXX") .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) .withValue(Phone.TYPE, "1").build()); //Display name/Contact name ops.add(ContentProviderOperation .newInsert(ContactsContract.Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) .withValue(StructuredName.DISPLAY_NAME, "Mike Sullivan") .build()); //Email details ops.add(ContentProviderOperation .newInsert(ContactsContract.Data.CONTENT_URI) .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) .withValue(ContactsContract.CommonDataKinds.Email.DATA, "abc@aho.com") .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE) .withValue(ContactsContract.CommonDataKinds.Email.TYPE, "2").build()); //Postal Address ops.add(ContentProviderOperation .newInsert(ContactsContract.Data.CONTENT_URI) .withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE ) .withValue(ContactsContract.CommonDataKinds.StructuredPostal.POBOX, "Postbox") .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE ) .withValue(ContactsContract.CommonDataKinds.StructuredPostal.STREET, "street") .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE ) .withValue(ContactsContract.CommonDataKinds.StructuredPostal.CITY, "city") .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE ) .withValue(ContactsContract.CommonDataKinds.StructuredPostal.REGION, "region") .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE ) .withValue(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE, "postcode") .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE ) .withValue(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY, "country") .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE ) .withValue(ContactsContract.CommonDataKinds.StructuredPostal.TYPE, "3") .build()); //Organization details ops.add(ContentProviderOperation .newInsert(ContactsContract.Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE ) .withValue(ContactsContract.CommonDataKinds.Organization.COMPANY, "Devindia") .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE ) .withValue(ContactsContract.CommonDataKinds.Organization.TITLE, "Developer") .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE ) .withValue(ContactsContract.CommonDataKinds.Organization.TYPE, "0") .build()); //IM details ops.add(ContentProviderOperation .newInsert(ContactsContract.Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE) .withValue(ContactsContract.CommonDataKinds.Im.DATA, "ImName") .withValue(Data.MIMETYPE, ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE ) .withValue(ContactsContract.CommonDataKinds.Im.DATA5, "2") .build()); try { ContentProviderResult[] res = 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(); } } } 

问题解决了。 find了这个问题; Als的工作答案是: 在Android 2.2中插入联系人

这个答案似乎很有帮助: https : //stackoverflow.com/a/3279117/1259161

它描述了如何使用ContractsContract API调用联系人条目表单。 这些API还应该允许您使用ContactsContract.CommonDataKinds.StructuredPostal来指定所需的额外字段。

  ContentValues p=new ContentValues(); p.put(RawContacts.ACCOUNT_TYPE, "com.google"); p.put(RawContacts.ACCOUNT_NAME, "email"); Uri rowcontect= getContentResolver().insert(RawContacts.CONTENT_URI, p); long rawcontectid=ContentUris.parseId(rowcontect); ContentValues value = new ContentValues(); value.put(Data.RAW_CONTACT_ID,rawcontectid); value.put(android.provider.ContactsContract.Data.MIMETYPE,StructuredName.CONTENT_ITEM_TYPE); value.put(StructuredName.DISPLAY_NAME, "kunja gajjar"); getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, value); //adding the contents to the data ContentValues ppv=new ContentValues(); ppv.put(android.provider.ContactsContract.Data.RAW_CONTACT_ID, rawcontectid); ppv.put(android.provider.ContactsContract.Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE); ppv.put(Phone.NUMBER, "975657789"); ppv.put(Phone.TYPE, Phone.TYPE_MOBILE); this.getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, ppv); 
 ContentValues cv = new ContentValues(); cv.put(People.NAME, e1.getText().toString()); // e1.getText().tostring() is Contact name Uri u = getContentResolver().insert(People.CONTENT_URI, cv); Uri pathu = Uri.withAppendedPath(u, People.Phones.CONTENT_DIRECTORY); cv.clear(); cv.put(People.NUMBER, e2.getText().toString()); // e2.getText().tostring() is Contact number getContentResolver().insert(pathu, cv); Toast.makeText(getApplicationContext(), "Contact Added",Toast.LENGTH_LONG).show();