android拨入电话的国家代码

问题描述:

我刚刚构建了一个检测来电的应用程序。我发现在某些手机(或不同版本的Android)中,来电号码有国家代码,有些来电号码没有。有没有办法使用国家代码在任何Android手机和任何版本的Android中接听来电?android拨入电话的国家代码

我使用广播接收器和PhoneStateListener,我得到onCallStateChanged incomingNumber的参数。所以,我没有使用telephonymanager.EXTRA_PHONE_NUMBER(其实我不知道究竟是什么呢EXTRA_PHONE_NUMBER)

这里做的是一个代码片段,您可以在广播接收器用于提取使用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()); 
    } 
    } 
} 

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?

你可以得到这个与libphonenumber库https://code.google.com/p/libphonenumber/