【问题标题】:country code of incoming calls in androidandroid中来电的国家代码
【发布时间】:2013-04-06 22:32:32
【问题描述】:

我刚刚构建了一个检测来电的应用程序。我看到在某些手机(或不同版本的android)中,来电号码有国家代码,有些来电号码没有。有没有办法在任何 android 手机和任何版本的 android 中获取带有国家代码的来电?

我使用广播接收器和PhoneStateListener,我在onCallStateChanged 处得到incomingNumber 的参数。所以我没有使用telephonymanager.EXTRA_PHONE_NUMBER(事实上我并没有使用EXTRA_PHONE_NUMBER)

【问题讨论】:

    标签: android country-codes


    【解决方案1】:

    这是一个 code-sn-p,您可以在 BroadcastReceiver 中使用 libphonenumber 库来提取国家/地区代码。

    @Override
    public void onReceive(Context context, Intent intent) {
      if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
        // get phone number from bundle
        String phoneNumber = intent.getExtras().getString(Intent.EXTRA_PHONE_NUMBER);
    
        // get country-code from the phoneNumber
        PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
        try {
           PhoneNumber numberProto = phoneUtil.parse(phoneNumber, Locale.getDefault().getCountry());
           if (phoneUtil.isValidNumber(numberProto)) {
              log.d("TAG", "Country Code: " + numberProto.getCountryCode());
           } else {
              log.d("TAG", "Invalid number format: " + phoneNumber);
           }
        } catch (NumberParseException e) {
           Log.d(TAG, "Unable to parse phoneNumber " + e.toString());
        }
      }
    }
    

    【讨论】:

    【解决方案2】:

    您可以使用 libphonenumber 库 https://code.google.com/p/libphonenumber/ 完成此操作

    【讨论】:

      【解决方案3】:

      EXTRA_PHONE_NUMBER 持有用户输入的号码

      保存最初输入的电话号码的字符串 ACTION_NEW_OUTGOING_CALL,或实际拨打的号码 ACTION_CALL。

      通过http://developer.android.com/reference/android/content/Intent.html#EXTRA_PHONE_NUMBER

      另外,你见过:How to get phone number from an incoming call? 吗?

      【讨论】:

        猜你喜欢
        • 2011-07-26
        • 2018-10-16
        • 2017-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-22
        相关资源
        最近更新 更多