X

TelephonyManagerを使って端末の情報を取得する

Android SDKでは電話番号やSIMのシリアルナンバーなどの情報をTelephonyManagerクラスを用いることで取得することができます。

端末の情報を取得することになるのでパーミッションの設定も必要になります。設定する必要があるパーミッションとともに、どのような情報が取得できるかを続きで説明します。

パーミッションの設定

AndroidManifest.xmlにREAD_PHONE_STATEのパーミッションを設定する必要があります。
下記のように記述します。

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

メソッド

TelephonyManagerクラスで取得できる情報はいくつかありますが主なものだけあげます。残りや取得できる情報の詳細はAndroid Developersを参照してください。リンクはこちらです。

TelephonyManagerの主なgetメソッド

メソッド名 情報
getLine1Number 電話番号
getDeviceId デバイスID
getSimCountryIso SIMの国コード
getSimOperator MCC+MNC (mobile country code + mobile network code)
getSimOperatorName サービスプロバイダの名前
getSimSerialNumber SIMのシリアル番号
getSimState SIMの状態(通信可能か、PINロックされているかなど)
getVoiceMailNumber ボイスメールナンバー

サンプルコードです。

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
Log.d("TM", "Line1Number " + telephonyManager.getLine1Number());
Log.d("TM", "DeviceId " + telephonyManager.getDeviceId());
Log.d("TM", "SimCountryIso " + telephonyManager.getSimCountryIso());
Log.d("TM", "SimOperator " + telephonyManager.getSimOperator());
Log.d("TM", "SimOperatorName " + telephonyManager.getSimOperatorName());
Log.d("TM", "SimSerialNumber " + telephonyManager.getSimSerialNumber());
Log.d("TM", "SimState " + telephonyManager.getSimState());
Log.d("TM", "VoiceMailNumber " + telephonyManager.getVoiceMailNumber());

そしてこちらが上記のコードをエミュレータで動かしたログです。

kkato: