Android 安卓系统中来电的国家/地区代码

Android 安卓系统中来电的国家/地区代码,android,country-codes,Android,Country Codes,我刚刚构建了一个检测来电的应用程序。我发现在一些手机(或不同版本的android)中,来电号码有国家代码,而有些来电号码没有。在任何安卓手机和任何版本的安卓系统中,有没有一种方法可以拨打带有国家代码的来电 我使用广播接收器和PhoneStateListener,在onCallStateChanged上获得incomingNumber参数。所以我没有使用telephonymanager.EXTRA\u PHONE\u NUMBER(事实上我不知道EXTRA\u PHONE\u NUMBER的确切功

我刚刚构建了一个检测来电的应用程序。我发现在一些手机(或不同版本的android)中,来电号码有国家代码,而有些来电号码没有。在任何安卓手机和任何版本的安卓系统中,有没有一种方法可以拨打带有国家代码的来电


我使用广播接收器和PhoneStateListener,在onCallStateChanged上获得incomingNumber参数。所以我没有使用telephonymanager.EXTRA\u PHONE\u NUMBER(事实上我不知道EXTRA\u PHONE\u NUMBER的确切功能)

EXTRA\u PHONE\u NUMBER
保存用户输入的号码

包含最初在中输入的电话号码的字符串 动作\u新的\u传出的\u呼叫,或实际的呼叫号码 行动电话

通过


另外,您是否看到:?

EXTRA\u PHONE\u NUMBER
保存用户输入的号码

包含最初在中输入的电话号码的字符串 动作\u新的\u传出的\u呼叫,或实际的呼叫号码 行动电话

通过


另外,您看到了吗?

您可以使用libphonenumber库完成此操作

您可以使用libphonenumber库完成此操作

这里是一个代码片段,您可以在您的广播接收器中使用它来使用libphonenumber库提取国家代码


下面是一个代码片段,您可以在BroadcastReceiver中使用它来使用libphonenumber库提取国家代码

如何使用:下载JAR文件并在android中使用如何使用:下载JAR文件并在android中使用
@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());
    }
  }
}