使用手机号码 Android 查找国家代码

Posted

技术标签:

【中文标题】使用手机号码 Android 查找国家代码【英文标题】:Find Country code by using Mobile Number Android 【发布时间】:2016-08-25 05:27:41 【问题描述】:

有什么方法可以从我的手机号码中找到国家代码。基本上,我正在为一个聊天应用程序工作,我需要使用手机号码找到国家代码。有可能吗?

例如:

My Country - India,
Country Code - +91,
My number - 9787248566

现在我只有我的号码了。我不知道国家代码。我不知道是哪个国家。是否可以在 android 中以编程方式实现这一点?

【问题讨论】:

用国家名称找到县代码.. ***.com/questions/5402253/… 请阅读我提到的问题。 “我不知道是哪个国家” "我不知道国家代码。我不知道是哪个国家。" - 那你不能确定。仅搜索该号码即可为我提供位于美国马萨诸塞州伍斯特市的位置,这显然不是您想要的。 是的,如果我使用这个号码,那么它将显示不同的国家。 【参考方案1】:

如果您已经拥有特定格式的完整手机号码,例如+91-99xxxxxxxx 并且想获取国家代码=IN,那么这里是一个解决方案的参考。

在你的 gradle 中使用一个库。

//Phone Utils lib.
implementation 'com.googlecode.libphonenumber:libphonenumber:7.0'

帮助查找国家代码和其他信息的代码如下。

PhoneNumberUtil utils = PhoneNumberUtil.getInstance();
try 
    for (String region : utils.getSupportedRegions()) 
        // Check whether it's a valid number.
        boolean isValid = utils.isPossibleNumber(mobileNo, region);
        if (isValid) 
            Phonenumber.PhoneNumber number = util.parse(mobileNo, region);
            // Check whether it's a valid number for the given region.
            isValid = utils.isValidNumberForRegion(number, region);
            if (isValid) 
                Log.d("Region:" , region); // IN
                Log.d("Phone Code", number.getCountryCode()); // 91
                Log.d("Phone No.", number.getNationalNumber()); // 99xxxxxxxxxx  
            
        
    
 catch (NumberParseException e) 
    e.printStackTrace();

【讨论】:

【参考方案2】:

使用TelephonyManager.getSimCountryIso()

如果您想将其映射到数字,请参阅how to get country phone prefix from iso

【讨论】:

以上是关于使用手机号码 Android 查找国家代码的主要内容,如果未能解决你的问题,请参考以下文章

从电话号码中查找国家代码

iOS如何查找用户电话号码的国家代码?

Android - 来自带有国家代码的号码的联系方式

Android:来电时的电话号码格式,确定国家代码?

如何在 Android 应用程序中获取 ISO 国家代码?

Android 和 IOS - 如何敲掉国家代码和电话号码前的 0