2013年5月13日月曜日

端末識別コード(TelephonyManager, TELEPHONY_SERVICE)

端末シリアルの取得の仕方です。

ガラケの時は何も考えずに取得できたのですが、
Androidだと、そうは問屋が卸してくれません。

しかも、Manifestに専用のパーミッションを書かなければいけないので、
ユーザーにインストールを警戒されてしまいます。

■サンプルソース

・MainActivity
package com.example.tanmatu;

import android.app.Activity;
import android.content.Context;
import android.provider.Settings;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.widget.LinearLayout;
import android.widget.TextView;


public class MainActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //レイアウトの生成
        LinearLayout oLayout = new LinearLayout(getApplicationContext());
        //上から下にパーツを組み込む
        oLayout.setOrientation(LinearLayout.VERTICAL);
        //画面の設定
        setContentView(oLayout);

        //端末情報取得クラス:TelephonyManager生成
        TelephonyManager telMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);

        //デヴァイスID
        String deviceid = telMgr.getDeviceId();
        //電話番号
        String phoneNumber = telMgr.getLine1Number();
        //SIM国別コード
        String simCountryIso = telMgr.getSimCountryIso();
        //SIMシリアルナンバー
        String simSerialNumber = telMgr.getSimSerialNumber();
        // 携帯端末固有ID
        String deviceId = telMgr.getDeviceId();

        //AndroiIDの取得
        String sAndroid = Settings.Secure.getString(this.getContentResolver(), Settings.System.ANDROID_ID);
        oLayout.addView(Make_TextView("Phone Number" + phoneNumber));
        oLayout.addView(Make_TextView("SIM国別コード" + simCountryIso));
        oLayout.addView(Make_TextView("SIMシリアルナンバー" + simSerialNumber));
        oLayout.addView(Make_TextView("携帯端末固有" + deviceId));
        oLayout.addView(Make_TextView("Android ID" + sAndroid));
    }
    private TextView Make_TextView(String sTitle){
        TextView oTv = new TextView(this);
        oTv.setText(sTitle);
        return oTv;
    }
}

・manifest.xml

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

を追加

■実行結果



他にもたくさんの関数が用意されているので、詳しはリファレンスで!!

リファレンスはこちら


エミュレータだと携帯端末固有IDが0000のようになっています。
端末やSIMカードの有無によって、取得できる値が変わってくるので、注意が必要です。

また、今回はAndroidIDの取得をしていますが、AndroidIDはTelephonyManagerとは関係のない処理です。

AndroidIDとはすべてのAndroidの端末に設定されている数値で、端末を初期化すると、この値は変更されます。

端末を識別したいのか?
ユーザーを識別したいのか?

ちゃんと考えてからの実装をおすすめします。



0 件のコメント:

コメントを投稿