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

java-无法检测现有电话号码,第1张

概述我想查看联系人数据库中是否存在联系人.我提出了以下代码:publicstaticbooleancontactExists(Activity_activity,Stringnumber){UrilookupUri=Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI,Uri.encode(number));String[]m

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

 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();            }
总结

以上是内存溢出为你收集整理的java-无法检测现有电话号码全部内容,希望文章能够帮你解决java-无法检测现有电话号码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1120711.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存