有一些方法可以在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 權限,否則無線局域網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. BT MAC地址字符串,與藍牙Android設備,可如果你的項目有android.permission.BLUETOOTH權限讀取。
BluetoothAdapter m_BluetoothAdapter = null; // Local Bluetooth adapter
m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
String m_szBTMAC = m_BluetoothAdapter.getAddress();
返回:43:25:78:50:93:38。英國電信不一定要開啓,閱讀它。僅適用於手機使用Android設備 4 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)。 欲瞭解更多信息,請聯繫refer此鏈接。
很好的答案+1 –
雖然你說得對,沒有電話模塊的設備沒有IMEI,但也有製造商給他們的設備僞造IMEI。其中一個例子就是Odys命名爲Loox plus的低成本設備 - 所以如果您嘗試以特殊方式處理這些設備,請不要指望在調用TelephonyManager.getDeviceId()時獲取null或空字符串! – Schlangi
我在你的解釋中發現了一個小錯誤:IMSI由TelephonyManager.getSubscriberId()報告,SIM卡的序列號是不同的東西:可以製作SIM卡的多個副本,全部使用相同的IMSI但不同的序列號。其結果是SIM卡,可用於不同的電話具有相同的電話號碼(例如智能手機和汽車電話),但一次只能使用一個。在移動網絡可以同時處理每個電話號碼的多個IMSI之前,這是一個常見的使用案例。 – Schlangi