Androidでデバイス関連のIDを取得する方法

Android端末の固有IDを取得する処理を簡単にまとめました。
固有IDというとシリアル番号「IMEI」、電話番号、MacAddressが考えられます。画面イメージではMacAddressも取得できていますが、最近のAndroid端末では取得できないように仕様が変わっているそうです。取得できないときは、乱数で生成するなどの対策も考えられますが、アプリを再インストールするケースを考慮すると、あまりやりたくはないですね。

また、AndroidIdという識別子もあり、これはAndroidのOSセットアップ時に割り振られるIDということになっています。こちらを採用したほうが適切かもしれません。

プログラム

@RequiresApi(api = Build.VERSION_CODES.O)
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
        return;
    }

    String deviceImei  = tm.getImei();
    String line1Number = tm.getLine1Number();
    String androidId   = Settings.Secure.getString(getContentResolver(), "android_id");

    WifiManager wifi = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
    WifiInfo wifiInfo = wifi.getConnectionInfo();
    String macAddress = wifiInfo.getMacAddress();

    TextView tv = new TextView(this);
    tv.setText(deviceImei + "\n" + line1Number + "\n" + androidId + "\n" + macAddress);
    tv.setTextSize(32);
    setContentView(tv);
}

システム開発

Posted by @erestage