我正在尝试以编程方式获取新添加联系人的 contactId。正在成功添加联系人并从 ContentProviderResult[] 获取 contactID 但我得到的 contactId 不正确。我也看到了this和 this回答,但 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。 我知道这不是查找联系人的正确方法。但这对我有用。
关于android - 在以编程方式将新联系人插入到 android 中的手机时获取 ContactId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39971606/