2016-09-07 9 views
-6

テレフォニーマネージャを使用するとモバイル番号にnull値が返されるため、ユーザーに尋ねることなくモバイル番号をアプリに直接送信したいと考えています。番号は「利用不可」である場合解決方法Androidでモバイル番号を取得する場合

TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
String number = tm.getLine1Number(); 

getLine1Number()nullを返しますが、数が使用できない場合がありますとき、それは言っていない:

+0

あなたがNULL値 –

+0

TelephonyManagerのTM =(TelephonyManager)getBaseContext()getSystemService(Context.TELEPHONY_SERVICE)を得たときにあなたのコードを投稿し;。 String mobileNumber = tm.getLine1Number();ここではmobileNumberをnullとして取得しています –

答えて

0

これを行うには、TelephonyManagerを使用することができます。

あなたがマニフェストに以下を追加することによって、このクエリを作るために、アプリケーションのアクセス許可を与える必要があります:

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

はい、しかしNumberが利用できない場合は解決策が必要です –

0

は、国コード

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); 


    } 

を生成するための方法の下に与えられたが、国番号を取得してください地域コードから

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; 
    } 
} 

Do AndroidManifestに権限を追加することを忘れないで:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
関連する問題