如何在以编程方式将 newInsert 插入地址簿后获取最后插入的 RawContacts ID?
Posted
技术标签:
【中文标题】如何在以编程方式将 newInsert 插入地址簿后获取最后插入的 RawContacts ID?【英文标题】:How to get last inserted RawContacts ID after newInsert into address book programactically? 【发布时间】:2011-12-16 04:50:23 【问题描述】:我已成功将联系人插入通讯录,我需要在我的应用中保存联系人的引用。我认为保存引用的最佳方法是获取 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。谢谢!
【问题讨论】:
【参考方案1】:您可以使用从 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));
【讨论】:
不错!直奔主题,没有麻烦。谢谢您的帮助。 =D以上是关于如何在以编程方式将 newInsert 插入地址簿后获取最后插入的 RawContacts ID?的主要内容,如果未能解决你的问题,请参考以下文章
如何在以编程方式创建的 UIPicker Delegate 中返回选定的值
如何在以编程方式创建实体时设置 NSManagedObjectModel 的配置。