【问题标题】:Comparing phone numbers in Android比较 Android 中的电话号码
【发布时间】:2012-08-30 05:45:10
【问题描述】:

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

通常会收到回复 +[country-code][area-code-if-any][and-then-the-actual-number] 格式。例如, +94 71 2593276 获取斯里兰卡电话号码。

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

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

谢谢。

【问题讨论】:

  • 电话号码不遵循适用于每个国家/地区的简单规则。您需要为每个国家/地区编写案例代码。
  • @PeterLawrey 这似乎有点极端...... :) 但它应该是可能的。想想股票 Android 消息应用程序。无论我们是否以两种方式输入它,它都会识别它是否相同。
  • 我想它有一个查找表。无论如何要阅读或反编译这个应用程序的源代码吗?
  • 我希望它只比较最后 10 个数字
  • @PeterLawrey 我目前正在开发应用程序,但我不允许显示源代码。对不起:(

标签: java android string phone-number


【解决方案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!
   }

【讨论】:

    【解决方案2】:

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

    对于您的情况,解决方案是PhoneNumberUtils.@987654322@PhoneNumberUtils.@987654323@。前者检查资源以确定是使用严格比较算法还是松散比较算法,因此在大多数情况下是更好的选择。

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

    看看官方documentation。还有source code

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        只需应用您的逻辑来删除 () 和 - 并关注 PhoneNumberUtils

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-30
          • 2011-01-04
          • 2011-10-12
          • 1970-01-01
          • 2014-03-27
          相关资源
          最近更新 更多