开始添加新的联系活动并传递结构化数据

时间:2013-03-22 08:29:45

标签: android android-contacts

可以启动默认人员/联系人活动并传递结构化数据,例如 分隔名字和姓氏,电话类型,城市,邮政编码和类似数据。 我使用以下类似的代码:

Intent addContactIntent = new Intent(Intent.ACTION_INSERT); 
addContactIntent.setType(ContactsContract.Contacts.CONTENT_TYPE);              
addContactIntent.putExtra(ContactsContract.Intents.Insert.POSTAL, "abc 2343");      
startActivity(addContactIntent );   

这很好但我不能指定哪个是例如邮政编码,什么是城市或地方。 我找到了样本like this here,但我之前无法开始添加新的联系意图,因此用户在保存联系之前无法编辑内容。代码会在没有用户交互的情况下立即保存联系人。

任何帮助都会很明显。

1 个答案:

答案 0 :(得分:0)

至于你的信息,你可以使用ContactsContract.Intents.Insert.DATA,它可以插入多个数据项。就像地址字段的城市,州等一样。但真正的问题是它在API 11之前是不可用的

以下是它的工作原理。

  ArrayList<ContentValues> data = new ArrayList<ContentValues>();
  //Email
  ContentValues row1 = new ContentValues();
  row1.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
  row1.put(Email.ADDRESS, "ADDRESSme");
  data.add(row1);

  //Website
  ContentValues row2 = new ContentValues();
  row2.put(Data.MIMETYPE, Website.CONTENT_ITEM_TYPE);
  row2.put(Website.URL, "URLme");
  data.add(row2);
   //Address
   ContentValues row4 = new ContentValues();
   row4.put(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE);
   row4.put(StructuredPostal.CITY, "CityMe");//Pre populating  city
   row4.put(StructuredPostal.COUNTRY, "COUNTRYme");//Pre populating  country
   row4.put(StructuredPostal.STREET, "STREETme");////Pre populating  street
   row4.put(StructuredPostal.POSTCODE, "POSTCODEme");//
   data.add(row4);

  Intent i = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI);
  i.putParcelableArrayListExtra(Insert.DATA, data);