可以启动默认人员/联系人活动并传递结构化数据,例如 分隔名字和姓氏,电话类型,城市,邮政编码和类似数据。 我使用以下类似的代码:
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,但我之前无法开始添加新的联系意图,因此用户在保存联系之前无法编辑内容。代码会在没有用户交互的情况下立即保存联系人。
任何帮助都会很明显。
答案 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);