【问题标题】:how to get country code of phone number in android?如何在android中获取电话号码的国家代码?
【发布时间】:2014-12-05 07:32:37
【问题描述】:

我正在从联系人那里获取所有电话号码。然后我使用 PhoneUtil.parse() 方法检查了所有号码以获取号码类型。但是当电话号码没有与国家代码一起保存时,它会出现异常。例如电话号码就像9876512343 or 09876512343 它是一个印度号码。对于这个数字,我正在解析异常。如果我这样做

PhoneNumber numberProto = phoneUtil.parse(phoneNumber, "IN");

那么这对那个号码来说不是问题。但是我怎么知道这个数字是一个印度数字,所以我可以在那个参数中传递 IN。因此,如果我可以获取给定电话号码(字符串)的国家代码,那么它可以解决我的问题。

【问题讨论】:

标签: android


【解决方案1】:

这是我的工作代码:

TelephonyManager tm = (TelephonyManager) getApplicationContext()
                             .getSystemService(Context.TELEPHONY_SERVICE);
String phNo = tm.getLine1Number();
String country = tm.getSimCountryIso();

Log.d("PhoneNumber :", phNo);
Log.d("country :", country);

在 AndroidManifest.xml 中添加以下行

<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 

【讨论】:

  • OP 不想找出 SIM 号码的国家代码。她从通讯录中提取了各种号码(她提到的很清楚)。
  • thanks...以上解决方案有助于找出自己设备SIM卡号的国家代码。
  • 这是否意味着,如果我将一个电话号码放入通讯簿中,该号码没有国家前缀,则该号码将用于拨打电话?这意味着如果我来自以色列(前缀是“+972”),我添加了一个电话号码“(0)50-1234567”,然后我拨打这个号码,它实际上叫“+972-50-1234567”?
  • @androiddeveloper 很确定这不是它的工作原理。您的电话会将不带前缀的数字传递给您当地的电信提供商,他们将在本地进行路由。如果提供了前缀,则将其路由为长距离等。
  • @JoshPinter 我明白了。谢谢。
【解决方案2】:

有很好的图书馆,以防你不想 READ_PHONE_STATE。

 implementation 'io.michaelrocks:libphonenumber-android:8.12.13'

链接到 github 上的父 C++ 库。

google/libphonenumber

并在此处发布快速入门。 Android. How to detect a country code by the phone number

代码示例如下:

        String NumberStr = user.getPhone();
    PhoneNumberUtil phoneUtil = PhoneNumberUtil.createInstance(this.getContext());;
    try {
        Phonenumber.PhoneNumber NumberProto = phoneUtil.parse(NumberStr, null);
        if (!phoneUtil.isValidNumber(NumberProto)) {
            showError(getResources().getString(R.string.wrong_phone_number));
            return;
        }
        String regionISO = phoneUtil.getRegionCodeForCountryCode(NumberProto.getCountryCode());
        
        
    } catch (NumberParseException e) {
        showError(e.toString());
        return;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 2016-04-16
    • 2013-05-24
    • 1970-01-01
    • 2018-02-22
    • 2015-06-27
    相关资源
    最近更新 更多