gpt4 book ai didi

android - 从 Android 联系人数据库中搜索电话号码

转载 作者:行者123 更新时间:2023-11-29 20:09:40 25 4
gpt4 key购买 nike

我正在实现一个 AutocompleteView 来搜索电话号码。除了在某些情况下,代码工作正常。

我的代码:

Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String[] projection = new String[]{ContactsContract.CommonDataKinds.Phone._ID, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone.TYPE};
String selection = ContactsContract.CommonDataKinds.Phone.NUMBER + " LIKE ?";
String[] selectionArgs = new String[]{"%" + charSequence.toString() + "%"};
Cursor cursor = context.getContentResolver().query(uri, projection, selection, selectionArgs, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");

此代码在电话号码中没有空格的情况下工作正常。例如,如果我在 autocompleteView 中输入“123”,它可以找到“9123456789”或“8283929383”之类的电话号码,但无法找到“9123 456 789”或“912”之类的电话号码3456 789'

我什至尝试使用 ContactsContract.PhoneLookup API 实现它,但它根本不起作用。

使用 ContactsContract.PhoneLookup API 编写代码:

String[] projection = new String[]{ContactsContract.PhoneLookup._ID, ContactsContract.PhoneLookup.DISPLAY_NAME, ContactsContract.PhoneLookup.NUMBER, ContactsContract.PhoneLookup.TYPE};

Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(charSequence.toString()));

Cursor cursor = context.getContentResolver().query(uri, projection, null, null, ContactsContract.PhoneLookup.DISPLAY_NAME + " ASC");

感谢任何帮助。

最佳答案

不使用 ContactsContract.CommonDataKinds.Phone.NUMBER,而是使用 ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER(这会返回 E164 格式的电话号码)

关于android - 从 Android 联系人数据库中搜索电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35198992/

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