Android携帯で一意の識別子を取得するためのいくつかのアプローチがあります。
Android IDこれは、デバイスの最初の起動時に生成される64ビットの16進文字列です。通常、工場出荷時にリセットされない限り変更されません。
Secure.getString(getContentResolver()、Secure.ANDROID_ID);
Android IDは、nullになることがあるため、信頼できないと見なされます。ドキュメントには、「工場出荷時のリセット時に変更される可能性がある」と記載されています。この文字列は、ルート化された電話でも変更できます。
String m_szAndroidID = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
Returns: 9774d56d682e549c . No special permissions required.
2. WLAN MACアドレス文字列は、デバイスIDとして使用できるもう1つの一意の識別子です。読む前に、プロジェクトにandroid.permission.ACCESS_WIFI_STATE権限があることを確認する必要があります。そうしないと、WLANMACアドレスがnullとして表示されます。
WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE);
String m_szWLANMAC = wm.getConnectionInfo().getMacAddress();
Returns: 00:11:22:33:44:55 (not a real address since this is a custom ROM , as you can see the MAC address can easily be faked).
WLAN doesn't have to be on, to read this value.
3.プロジェクトにandroid.permission.BLUETOOTH権限がある場合、Bluetoothを搭載したAndroidデバイスで使用可能なBTMACアドレス文字列を読み取ることができます。
BluetoothAdapter m_BluetoothAdapter = null; // Local Bluetooth adapter
m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String m_szBTMAC = m_BluetoothAdapter.getAddress();
戻り値:43:25:78:50:93:38。BTを読むために、オンにする必要はありません。4.電話を使用するAndroidデバイスのみのIMEI:
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String szImei = TelephonyMgr.getDeviceId(); // Requires READ_PHONE_STATE
これには、AndroidManifest.xmlに権限を追加する必要があり、ソフトウェアのインストール時にユーザーに通知されます:android.permission.READ_PHONE_STATE。IMEIはお使いの携帯電話に固有のものであり、次のようになります:359881030314356(0000000000000などの無効なIMEIを備えた試作デバイスを使用している場合を除く)。詳細については、このリンクを参照してください。