在Android相比电话号码(Comparing phone numbers in Android)

2019-06-27 20:17发布

我需要比较两个电话号码,以确定它们是否来自同一个发送器/接收器是。 用户可以将消息发送到一个接触,并且该接触可以回复。

答复通常是在+[country-code][area-code-if-any][and-then-the-actual-number]的格式。 例如, +94 71 2593276为斯里兰卡的电话号码。

当用户发送消息时,他通常会进入的格式(上面的例子) 0712593276 (假设他也是斯里兰卡)。

所以,我需要的是, 我需要检查,如果这两个数字都是相同的。 这个程序将在国际上使用。 因此,我不能只替换第2位以0(那么这将是对像美国这样的国家是一个问题)。 有没有办法在Java或者Android系统的专门做这个?

谢谢。

Answer 1:

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!
   }


Answer 2:

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

对于你的情况,解决的办法是PhoneNumberUtils. compare(Context context, String number1, String number2) PhoneNumberUtils. compare(Context context, String number1, String number2)或其他PhoneNumberUtils. compare(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") 

看看官方的文档 。 和源代码 。



Answer 3:

如何检查,如果数量是接收方号码的一个子?

举例来说,假设我的巴西号码是888-777-666,而你是111-222-333。 打电话给你,从这里开始,我需要拨打其他号码拨打国际长途。 比方说,我需要增加9999 + your_number,导致9999111222333。

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



Answer 4:

只适用你的逻辑删除()和 - ,并按照PhoneNumberUtils



文章来源: Comparing phone numbers in Android