有一些方法可以在 android 手机上获取唯一标识符。
Android ID 它是一个 64 位十六进制字符串,在设备首次启动时生成。除非恢复出厂设置,否则一般不会更改。
Secure.getString(getContentResolver(), Secure.ANDROID_ID);
Android ID 被认为是不可靠的,因为它有时可能为空。该文档指出它“可以在出厂重置时更改”。此字符串也可以在有根电话上更改。
String m_szAndroidID = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
Returns: 9774d56d682e549c . No special permissions required.
2. WLAN MAC 地址字符串是另一个唯一标识符,可用作设备 ID。在阅读之前,您需要确保您的项目具有 android.permission.ACCESS_WIFI_STATE 权限,否则 WLAN MAC 地址将显示为空。
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 权限,则可以在带有蓝牙的 Android 设备上读取 BT MAC 地址字符串。
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. IMEI 仅适用于手机使用的 Android 设备:
TelephonyManager TelephonyMgr = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String szImei = TelephonyMgr.getDeviceId(); // Requires READ_PHONE_STATE
这需要在 AndroidManifest.xml 中添加一个权限,并且在安装您的软件时会通知用户:android.permission.READ_PHONE_STATE。IMEI 对您的手机来说是独一无二的,它看起来像这样:359881030314356(除非您的预生产设备具有无效的 IMEI,例如 0000000000000)。有关更多信息,请参阅此链接。