11

我需要比较两个电话号码以确定它们是否来自同一个发件人/收件人。用户可以向联系人发送消息,并且该联系人可以回复。

回复通常采用 +[country-code][area-code-if-any][and-then-the-actual-number]格式。例如, +94 71 2593276对于斯里兰卡的电话号码。

而当用户发送消息时,他通常会输入格式(对于上面的示例)0712593276(假设他也在斯里兰卡)。

所以我需要的是,我需要检查这两个数字是否相同。这个应用程序将在国际上使用。所以我不能只用 0 替换前 2 位数字(那么对于像美国这样的国家来说这将是一个问题)。有没有办法在 Java 或 Android 中做到这一点?

谢谢。

4

4 回答 4

19

Android 有不错的 PhoneNumberUtils,我猜您正在寻找:

    public static boolean compare (String a, String b)

看看:http: //developer.android.com/reference/android/telephony/PhoneNumberUtils.html

使用它应该是这样的:

String phone1   
String phone2 

 if (PhoneNumberUtils.compare(phone1, phone2)) {
    //they are the same do whatever you want!
   }
于 2013-02-03T13:10:24.737 回答
11

android.telephony.PhoneNumberUtils类提供了几乎所有必要的功能来处理电话号码和标准。

对于您的情况,解决方案是or else 。前者检查资源以确定是使用严格比较算法还是松散比较算法,因此在大多数情况下是更好的选择。PhoneNumberUtils.compare(Context context, String number1, String number2)PhoneNumberUtils.compare(String number1, String number2)

PhoneNumberUtils.compare("0712593276", "+94712593276") // always true
PhoneNumberUtils.compare("0712593276", "+44712593276") // always true

// true or false depends on the context
PhoneNumberUtils.compare(context, "0712593276", "+94712593276") 

看看官方文档。和源代码

于 2016-08-06T23:15:55.743 回答
3

如何检查号码是否是接收方号码的子字符串?

例如,假设我的巴西号码是 888-777-666,而你的号码是 111-222-333。要从这里给您打电话,我需要拨打其他号码才能拨打国际电话。假设我需要添加 9999 + your_number,得到 9999111222333。

如果RawNumber.substring(your_number)返回true,我可以说我在给你打电话。

于 2012-09-05T14:37:20.130 回答
-1

只需应用您的逻辑删除 () 和 - 并按照 PhoneNumberUtils

于 2016-06-25T21:38:13.143 回答