0

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

我使用广播接收器和PhoneStateListener,我在onCallStateChanged 处得到incomingNumber 的参数。所以我没有使用telephonymanager.EXTRA_PHONE_NUMBER (事实上我不知道EXTRA_PHONE_NUMBER 到底是做什么的)

4

3 回答 3

2

这是一个代码片段,您可以在 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());
    }
  }
}
于 2013-04-23T22:43:37.843 回答
1

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

于 2013-04-10T12:15:36.127 回答
0

EXTRA_PHONE_NUMBER保存用户输入的号码

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

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

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

于 2013-04-06T22:48:58.723 回答