1

我成功地将联系人插入通讯录,我需要在我的应用程序中保存联系人的引用。我认为保存引用的最佳方法是获取 RawContacts ID 本身。

插入新联系人后,我有没有办法直接从通讯录中取回 ID?还是我必须取出每条记录并将它们与我的数据进行比较以获得 RawContacts ID?

我使用以下代码进行插入:

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

我感谢任何输入,无论是解决方法还是来自 API。谢谢!

4

1 回答 1

8

您可以使用从 getContentResolver() 返回的信息(无论如何您都必须调用它才能将操作添加到 DB。getContentResolver() 需要有一个 try,catch 环境。

...
ContentProviderResult[] res = getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
...
Uri myContactUri = res[0].uri;
int lastSlash = myContactUri.toString().lastIndexOf("/");
int length = myContactUri.toString().length();
int contactID = Integer.parseInt((String) myContactUri.toString().subSequence(lastSlash+1, length));
于 2012-02-16T19:00:49.917 回答