如何获得最后插入的RawContacts ID后,newInsert到地址簿程序化



我成功地将联系人插入到地址簿中,我需要在我的应用程序中保存联系人的引用。我认为保存引用的最佳方法是获取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()返回的信息(无论如何,您必须调用以便向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));

最新更新