Android 如何以编程方式将newInsert后最后一次插入的联系人ID插入通讯簿?

Android 如何以编程方式将newInsert后最后一次插入的联系人ID插入通讯簿?,android,contactscontract,rawcontacts,Android,Contactscontract,Rawcontacts,我成功地将联系人插入通讯簿,我需要在我的应用程序中保存该联系人的引用。我认为保存引用的最好方法是获取rawid本身 有并没有一种方法可以让我在插入新联系人后立即从通讯簿中直接获取ID?还是我必须把每一条记录都拿出来,并将它们与我的数据进行比较,以获得原始联系人ID 我使用以下代码进行插入: ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); int raw

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

有并没有一种方法可以让我在插入新联系人后立即从通讯簿中直接获取ID?还是我必须把每一条记录都拿出来,并将它们与我的数据进行比较,以获得原始联系人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());
ArrayList ops=new ArrayList();
int rawContactInsertIndex=ops.size();
添加(ContentProviderOperation.newInsert(RawContacts.CONTENT\uURI)
.withValue(RawContacts.ACCOUNT_类型,null)
.withValue(RawContacts.ACCOUNT\u名称,空)
.withValue(已禁用RawContacts.AGGREGATION\u模式、RawContacts.AGGREGATION\u模式)
.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));

您可以使用从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!直截了当地说,不费吹灰之力。谢谢你的帮助。=D