安卓如何为联系人添加多个电话号码

3

使用 Android SDK > 5,我正在通过启动 ACTION_INSERT 活动来创建联系人。 我想使用以下代码为联系人添加多个电话号码(工作、家庭等):

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 是整数类型,所以我不确定......这是什么原因呢?
谢谢!
1个回答

0

logcat 显示它期望的是一个字符串值,而不是整数。这就是你的问题所在。电话号码应该是字符串类型。

我从官方文档中提取了这个例子,你可以看到电话号码被表示为带有 "" 的字符串。

// 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插入联系人,而不是像您提供的代码片段直接插入联系人。谢谢。 - gregory maertens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接