我需要支持Android 2.1及更高版本。
谷歌公布了如何使用ContactsContract的例子,但它的一些使用的东西都开始可用API级别11,所以我需要即兴,但我坚持。
所以,到目前为止,我有这样的:
String firstName = contactProperties.get("firstName");
String lastName = contactProperties.get("lastName");
String phone = contactProperties.get("phone");
String email = contactProperties.get("email");
String company = contactProperties.get("company");
String postal = contactProperties.get("street") + ", " + contactProperties.get("city") + ", " + contactProperties.get("state") + " " + contactProperties.get("zip") + " " + contactProperties.get("country");
// Creates a new intent for sending to the device's contacts application
Intent insertIntent = new Intent(ContactsContract.Intents.Insert.ACTION);
// Sets the MIME type to the one expected by the insertion activity
insertIntent.setType(ContactsContract.RawContacts.CONTENT_TYPE);
insertIntent.putExtra(ContactsContract.Intents.Insert.NAME, firstName + " " + lastName);
insertIntent.putExtra(ContactsContract.Intents.Insert.EMAIL, email);
insertIntent.putExtra(ContactsContract.Intents.Insert.PHONE, phone);
insertIntent.putExtra(ContactsContract.Intents.Insert.COMPANY, company);
insertIntent.putExtra(ContactsContract.Intents.Insert.POSTAL, postal);
// Send out the intent to start the device's contacts app in its add contact activity.
startActivity(insertIntent);
请注意我是如何构成的NAME
和POSTAL
临时演员。 这不是在所有的设备上工作,但因为一些地址簿有姓和名分开领域以及城市,州和邮编领域。 所以,我的“解决方案”看上去非常愚蠢的:第一名称字段具有第一和最后一个名字,街道地址字段具有完整的地址。 我怎样才能解决这个问题? 会不会有人给我一个例子吗?
根据记录,这并不工作:
insertIntent.putExtra(ContactsContract.CommonDataKinds.StructuredPostal.STREET, contactProperties.get("street"));
insertIntent.putExtra(ContactsContract.CommonDataKinds.StructuredPostal.CITY, contactProperties.get("city"));
另外请注意,我不希望在我的清单中添加权限以允许写入联系人。 这是使用意向的整点。