2

可能重复:
如何在 android 中添加新联系人

如何为联系人添加姓名?我有两个微调器,一个用于名字,一个用于姓氏。分配的变量是linkname1 和linkname2。当用户按下“确定”按钮(这些都在对话框中)时,应将名称(链接名称 1 + " " + 链接名称 2)添加到联系人中。我可以阅读联系人,但我该怎么写呢?

谢谢

更新:我也试过这个:

newname = linkname1 + " " + linkname2;
ContentValues values = new ContentValues();
vales.put(ContactsContract.Contacts.DISPLAY_NAME, newname);

和这个:

StringBuffer strBuf = new StringBuffer();
strBuf.append(linkname1);
strBuf.append(" ");
strBuf.append(linkname2);
ContentValues values = new ContentValues();
values.put(ContactsContract.Contacts.DISPLAY_NAME, strBuf.toString());

但是新名称没有出现在联系人列表中。

4

2 回答 2

1

该内容提供者虽然仍然可以工作,但在 2.2 中被替换为联系人合同。以下代码将适用于新的联系人合约提供商:

ArrayList<ContentProviderOperation> ops =
          new ArrayList<ContentProviderOperation>();
 ...
 int rawContactInsertIndex = ops.size();
 ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
          .withValue(RawContacts.ACCOUNT_TYPE, accountType)
          .withValue(RawContacts.ACCOUNT_NAME, accountName)
          .build());

 ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
          .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex)
          .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
          .withValue(StructuredName.GIVEN_NAME, linkname1)
          .withValue(StructuredName.FAMILY_NAME, linkname2)
          .build());

 getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);

您必须从AccountManager服务中查询的帐户名称和类型。通过选择一个帐户(例如本地或谷歌)或提示用户。

于 2011-03-04T21:04:21.927 回答
0

Android 操作方法(创建新联系人):

http://www.lacherstorfer.at/haris_blog/2008/03/android-howto-create-a-new-con.html

请务必查看评论中的代码编辑,可能有助于根据版本进行修复。

于 2011-03-04T17:59:54.827 回答