2

我已经构建了一个应用程序,在其中循环并收集用户电话联系人,我的目标是然后使用这些号码并查询我的解析数据库并查找包含用户联系人的记录(这将检查是否有任何用户联系人是我的应用程序的用户,用户的电话号码将在他们注册时保存到我的解析数据库中)。我遇到的问题是,在收集用户联系人号码时,它们以不同的格式返回,一些 +447966000000、一些 07966000000、一些 07 966000 000000 等。

我的问题是,什么时候格式化我的号码的最佳方式是什么?将它们保存到数据库并从用户联系人中检索它们,以便以相同的格式保存和检索所有数字,以便当我对它们进行条件检查时,它们将易于比较?

我已经下载了电话号码实用程序库,但我不确定库中的什么可以用来做这样的事情。



到目前为止的代码:

 Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
        while (phones.moveToNext())
        {
            String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

            Toast.makeText(getApplicationContext(),name + " " + phoneNumber, Toast.LENGTH_LONG).show();
        }
        phones.close();
4

2 回答 2

6

您可以使用PhoneNumberUtils.compare来比较和检查它们是否相同。如果它们相同,则返回 true,忽略国家代码等。

例子:

PhoneNumberUtils.compare(context, 1234567890, +911234567890);

返回true

于 2017-02-04T09:21:24.010 回答
0

我已经为印度手机号码格式做到了

   private String getNumber(String moNumber) {
    Pattern special = Pattern.compile ("[!@#$%&*()_+=|<>?{}\\[\\]~-]");
    if (moNumber.isEmpty()||moNumber.length()<10) {
        MydebugClass.showToast(getContext(), "Please input valid Number");
        return null;
    }else if (moNumber.length()>10 && !special.matcher(moNumber).find()){
        String[] number=moNumber.split("");
        StringBuilder stringBuilder=new StringBuilder();
        for(int i=moNumber.length();i>moNumber.length()-10;i--){
            stringBuilder.append(number[i]);
        }
        String reverse=new StringBuffer(stringBuilder).reverse().toString();
        return reverse;
    }else if(moNumber.length()>10&&special.matcher(moNumber).find()){
        String numberOnly= moNumber.replaceAll("[^0-9]", "");
        String[] number=numberOnly.split("");
        StringBuilder stringBuilder=new StringBuilder();
        for(int i=moNumber.length();i>moNumber.length()-10;i--){
            stringBuilder.append(number[i]);
        }
        String reverse=new StringBuffer(stringBuilder).reverse().toString();
        Log.d("mobilenumberspecial",reverse);
        return reverse;
    }
    else {
        return moNumber;
    }
    return  null;
}
于 2017-01-30T18:50:31.463 回答