有一些方法可以在Android手机上获得唯一标识符。
Android ID
这是一个64位的十六进制字符串,由设备在第一次启动时生成。
通常情况下,除非进行工厂重置,否则不会改变。
Secure.getString(getContentResolver(), Secure.ANDROID_ID);
Android ID被认为不可靠,因为它有时可能为空。
文档说明它“可能在工厂重置时更改”。
此字符串也可以在已获取root权限的手机上更改。
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地址将显示为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权限,则可以读取在Android设备上具有蓝牙功能的BT MAC地址字符串。
BluetoothAdapter m_BluetoothAdapter = null
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()
在AndroidManifest.xml文件中添加一个权限android.permission.READ_PHONE_STATE,用户在安装您的软件时将会被通知。IMEI是手机的唯一标识符,形式如下:359881030314356(除非您使用的是一个具有无效IMEI(如0000000000000)的预生产设备)。更多信息请参考此链接。