gpt4 book ai didi

android - 在以编程方式将新联系人插入到 android 中的手机时获取 ContactId

转载 作者:行者123 更新时间:2023-11-29 19:30:52 24 4
gpt4 key购买 nike

我正在尝试以编程方式获取新添加联系人的 contactId。正在成功添加联系人并从 ContentProviderResult[] 获取 contactID 但我得到的 contactId 不正确。我也看到了thisthis回答,但 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com