首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用部分搜索字符串搜索联系人

使用部分搜索字符串搜索联系人
EN

Stack Overflow用户
提问于 2017-07-30 07:19:10
回答 1查看 296关注 0票数 0

我想搜索android用户的联系人列表,只需输入一个特定号码的3-4位数字。我已经写了下面的方法来做同样的事情,但是只有当我写完整的10位数并且不少于10位数时,这个方法才能起作用。这意味着它只适用于精确的匹配。我想从98965开始.以此类推。但我只在输入完9896511112时才给我匹配。

代码语言:javascript
复制
 public static void getContactDetails(Context context, String number, int type) {
        String[] projection = new String[]{
                ContactsContract.PhoneLookup.DISPLAY_NAME,
                ContactsContract.PhoneLookup._ID,
                ContactsContract.PhoneLookup.LOOKUP_KEY,
                ContactsContract.PhoneLookup.PHOTO_URI,
                ContactsContract.PhoneLookup.NUMBER};
        Uri contactUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number.trim() + "%"));

        Cursor cursor = context.getContentResolver().query(contactUri, null, null, null, null);

        while (Common.nonNull(cursor) && cursor.moveToNext()) {
            String lookUpKey = cursor.getString(cursor.getColumnIndex(ContactsContract.PhoneLookup.LOOKUP_KEY));
            String mobileNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.PhoneLookup.NUMBER));
            Log.e("I am found", "Found " + number);
        }
        cursor.close();
    }

请帮我找出我的错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-30 07:52:03

啊终于来了。有一件事救了我的命:

代码语言:javascript
复制
Uri uri = Uri.withAppendedPath(ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI, Uri.encode(partial));

使用"ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI"而不是ContactsContract.PhoneLookup.CONTENT_FILTER_URI,,它将对您有效。

以下是我的完整示例:

代码语言:javascript
复制
public static void getContactDetails(Context context, String number, int type) {
    String[] projection = new String[]{
            ContactsContract.PhoneLookup.DISPLAY_NAME,
            ContactsContract.PhoneLookup._ID,
            ContactsContract.PhoneLookup.LOOKUP_KEY,
            ContactsContract.PhoneLookup.PHOTO_URI,
            ContactsContract.CommonDataKinds.Phone.NUMBER};
    Uri contactUri = Uri.withAppendedPath(ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI, Uri.encode(number.trim()));

    Cursor cursor = context.getContentResolver().query(contactUri, projection, null, null, null);

    while (Common.nonNull(cursor) && cursor.moveToNext()) {
        String lookUpKey = cursor.getString(cursor.getColumnIndex(ContactsContract.PhoneLookup.LOOKUP_KEY));
        String mobileNumber = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
        String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME));

        if (mobileNumber.length() > 10) {
            mobileNumber = mobileNumber.substring(mobileNumber.length() - 10);
            if (mobileNumber.startsWith(number)) {
                Log.e("I am found", "I am found " + mobileNumber + displayName);
            }
        }

    }

    cursor.close();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45397358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档