微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java-无法检测现有电话号码

我想查看联系人数据库中是否存在联系人.我提出了以下代码

 public static boolean contactExists(Activity _activity, String number){
        Uri lookupUri = Uri.withAppendedpath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI,Uri.encode(number));
        String[] mPhoneNumberProjection = { ContactsContract.PhoneLookup._ID, ContactsContract.PhoneLookup.NUMBER, ContactsContract.PhoneLookup.disPLAY_NAME };
        Cursor cur = _activity.getContentResolver().query(lookupUri,mPhoneNumberProjection, null, null, null);
        try {
            if (cur.movetoFirst()) {
                return true;
            }
        } finally {
            if (cur != null)
                cur.close();
        }
        return false;
    }

但是,如果设备上存在联系人,这总是给我错误提示.
我也将权限集成在清单中.

解决方法:

几个小时后,我发现了错误,基本上是在某些设备上,上面的代码可能无法正常工作.要100%确定,您将需要使用以下代码

 public String get_name() {

        ContentResolver cr = getContentResolver();
        Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
                null, null, null);

        if (cur.getCount() > 0) {

            while (cur.movetoNext()) {
                String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
                String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.disPLAY_NAME));

                if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {

                    System.out.println("name : " + name + ", ID : " + id);
                    if (name.equals(number)) {
                        title_holder = name;
                        break;
                    }else{
                        title_holder = number;
                        break;
                    }

                }
            }
        }
        return title_holder;
    } 

如您所见,它列出了设备中的所有联系人,而不仅仅是您可以检查它是否与您提供的号码匹配.

一个更简单的解决方案:

 String myPhone = getCallName.substring(16, getCallName.length() - 4);

            if (!myPhone.matches("^[\\d]{1,}$")) {
                myPhone = context.getString(R.string.withheld_number);
            } else if (listDir.get(i).getUserNameFromContact() != myPhone) {
                myPhone = listDir.get(i).getUserNameFromContact();
            }

原文地址:https://www.jb51.cc/android/1053069.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐