繁体   English   中英

android中来电的国家/地区代码

[英]country code of incoming calls in android

我刚刚构建了一个检测来电的应用程序。 我看到在某些电话(或其他版本的android)中,来电号码具有国家/地区代码,而某些来电号码没有。 有没有办法在任何Android手机和任何版本的Android中使用国家/地区代码接收来电?

我使用广播接收器和PhoneStateListener,我在onCallStateChanged处获得传入编号的参数。 因此,我没有使用telephonymanager.EXTRA_PHONE_NUMBER(实际上,我并没有EXTRA_PHONE_NUMBER的确切用途)

这是一个代码片段,您可以在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());
    }
  }
}

您可以使用libphonenumber库https://code.google.com/p/libphonenumber/

EXTRA_PHONE_NUMBER保留用户输入的号码

一个字符串,其中包含最初在ACTION_NEW_OUTGOING_CALL中输入的电话号码,或在ACTION_CALL中要拨打的实际电话号码。

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

另外,您是否看到: 如何从来电中获取电话号码?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM