我已成功将联系人插入通讯簿,并且需要在我的应用程序中保存该联系人的引用。我认为保存引用的最佳方法是获取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。谢谢!

最佳答案

您可以使用从getContentResolver()返回的信息(始终必须调用该信息才能向数据库添加操作。
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));

10-06 05:46