android为联系人添加多个电话号码
问题描述:
使用Android SDK> 5,我通过启动ACTION_INSERT活动创建联系人。 我想用下面的代码添加联系人多个电话号码(工作,家庭等):android为联系人添加多个电话号码
Intent newIntent = new Intent(Intent.ACTION_INSERT,
ContactsContract.Contacts.CONTENT_URI);
for(ContactInfo.Phone p : phones)
{
newIntent.putExtra(ContactsContract.Intents.Insert.PHONE, p.number);
newIntent.putExtra(ContactsContract.Intents.Insert.PHONE_ISPRIMARY, p.isPrimary ? new Integer(1) : null);
newIntent.putExtra(ContactsContract.Intents.Insert.PHONE_TYPE, unconvertPhoneType(p.type));
}
(unconvertPhoneType()是一个函数来获取类型CommonDataKinds.Phone.TYPE_XXX )
我只在联系人中插入了一个示例。 上述有什么问题?
此外,在logcat的日志,我也有以下错误:
12-14 11:09:03.015: WARN/Bundle(1724): Key phone_type expected String but value was a java.lang.Integer. The default value was returned.
看起来像是来自PHONE_TYPE,但是CommonDataKinds.Phone.TYPE_XXX是整型的,所以我不知道... 这是什么原因?
谢谢!
答
logcat告诉你它期望的是一个字符串值,而不是一个整数。那是你的问题。电话号码应该是String类型。
我从官方文档中拉出了这个例子,你可以看到电话号码用“”表示为一个字符串。
// Add a phone number for Abraham Lincoln. Begin with the URI for
// the new record just returned by insert(); it ends with the _ID
// of the new record, so we don't have to add the ID ourselves.
// Then append the designation for the phone table to this URI,
// and use the resulting URI to insert the phone number.
phoneUri = Uri.withAppendedPath(uri, People.Phones.CONTENT_DIRECTORY);
values.clear();
values.put(People.Phones.TYPE, People.Phones.TYPE_MOBILE);
values.put(People.Phones.NUMBER, "1233214567");
getContentResolver().insert(phoneUri, values);
希望这会有所帮助。
ContactInfo.Phone.number是一个字符串,因此它不是问题。请注意我通过Intent插入联系人,而不是直接将联系人插入到您提供的代码片段中。不过谢谢。 – 2010-12-15 07:48:07
我现在明白了。 – Phobos 2010-12-16 01:24:51