Android手机号码获取解决方案

Android手机号码获取解决方案,android,Android,使用Telephony Manager返回手机号码的空值,我想在不询问用户的情况下将手机号码直接输入应用程序。您可以使用Telephony Manager执行以下操作: TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); String number = tm.getLine1Number(); 如果该号码不可用,getLine1Number将返回null,但它没有说明该号码何时可能不可用 您

使用Telephony Manager返回手机号码的空值,我想在不询问用户的情况下将手机号码直接输入应用程序。

您可以使用Telephony Manager执行以下操作:

TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
String number = tm.getLine1Number();
如果该号码不可用,getLine1Number将返回null,但它没有说明该号码何时可能不可用

您需要通过向清单中添加以下内容来授予应用程序进行此查询的权限:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

请尝试下面给出的生成国家/地区代码的方法

  private void getCountryCode() {
        int code = 0;
        TelephonyManager telephonyManager = (TelephonyManager) getActivity().
                getSystemService(Context.TELEPHONY_SERVICE);
        String CountryISO = telephonyManager.getSimCountryIso().toString().toUpperCase();
        ;
        //String NetworkCountryIso = telephonyManager.getNetworkCountryIso().toString();
        String number = telephonyManager.getLine1Number();
        code = getCountryCodeForRegion(CountryISO);
        Log.i("CountryISO", "CountryISO " + CountryISO);
        Log.i("code", "code " + code);
        Log.i("number ", "number " + number);


    }
从regionCode获取CountryCode

public int getCountryCodeForRegion(String regionCode) {
    int result = -1;
    try {
        Class c = Class.forName("com.android.i18n.phonenumbers.PhoneNumberUtil");
        Method getInstance = c.getDeclaredMethod("getInstance");
        Method getCountryCodeForRegion = c.getDeclaredMethod("getCountryCodeForRegion", String.class);

        Object instance = getInstance.invoke(null);
        Integer code = (Integer) getCountryCodeForRegion.invoke(instance, regionCode);
        result = code;
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (NoSuchMethodException e) {
        e.printStackTrace();
    } catch (InvocationTargetException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } finally {
        return result;
    }
}
不要忘记在AndroidManifest中添加权限:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

获取空值TelephonyManager tm=TelephonyManager getBaseContext.getSystemServiceContext.TELEPHONY_服务时发布代码;字符串mobileNumber=tm.getLine1Number;在这里我得到的mobileNumber为nullyes,但我希望在号码不可用时得到解决方案