我试图以编程方式获得新添加的联系人的contactId。Contact正在成功添加,并从ContentProviderResult[]获取contactID,但contactID我得到的不是正确的。我也看到了这个和这个答案,但contactId不是正确的。这是我的代码
ArrayList<ContentProviderOperation> contentProviderOperation = new ArrayList<>();
......
......
ContentProviderResult[] results = getActivity().getContentResolver().applyBatch(ContactsContract.AUTHORITY, contentProviderOperation);
long contactId = ContentUris.parseId(results[0].uri);
我也试过下面的代码:
ContentProviderResult[] results = getActivity().getContentResolver().applyBatch(ContactsContract.AUTHORITY, contentProviderOperation);
Uri myContactUri = results[0].uri;
int lastSlash = myContactUri.toString().lastIndexOf("/");
int length = myContactUri.toString().length();
int contactID = Integer.parseInt((String) myContactUri.toString().subSequence(lastSlash+1, length));
但是我在这里得到的contactId不是正确的。如果我做错了什么,请纠正我。
在定期工作后,我找到了一种方法,通过以下代码找出正确的contactId:
public static int getContactIDFromNumber(String contactNumber, Context context) {
contactNumber = Uri.encode(contactNumber);
int phoneContactID = new Random().nextInt();
Cursor contactLookupCursor = context.getContentResolver().query(Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, contactNumber), new String[]{ContactsContract.PhoneLookup.DISPLAY_NAME, ContactsContract.PhoneLookup._ID}, null, null, null);
while (contactLookupCursor.moveToNext()) {
phoneContactID = contactLookupCursor.getInt(contactLookupCursor.getColumnIndexOrThrow(ContactsContract.PhoneLookup._ID));
}
contactLookupCursor.close();
return phoneContactID;
}
传递arrayList中新增联系人的contactId。我知道这不是找到联系人的正确方法。