簡體   English   中英

Android - 獨特且持續的設備ID

[英]Android - unique and constant device ID

我需要在服務器上注冊用戶設備,其唯一標識符是一個常量值,並且將來不會更改。

我找不到一個很好的解決方案來獲取所有設備的唯一ID(有/沒有simcard)。

Secure.ANDROID_ID :Secure.ANDROID_ID不是唯一的,可以為null或在出廠重置時更改。

String m_androidId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);

IMEI :IMEI依賴於設備的Simcard插槽,因此無法為不使用Simcard的設備獲取IMEI。

TelephonyManager tManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String uuid = tManager.getDeviceId();

WLAN MAC地址 :如果設備沒有wifi硬件,則返回空MAC地址。 用戶可以更改設備的mac地址。

WifiManager m_wm = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
String m_wlanMacAdd = m_wm.getConnectionInfo().getMacAddress();

藍牙地址字符串 :如果設備沒有藍牙硬件,則返回null。

BluetoothAdapter m_BluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
String m_bluetoothAdd = m_BluetoothAdapter.getAddress();

實例ID :當用戶卸載並重新安裝應用程序時,instance_id將會更改。 而且它不是一個恆定的價值。

你是否有任何想法從所有Android設備(有/沒有simcard,藍牙,...)獲得一個唯一的ID,它真的是唯一的,不能為空並且在卸載/重新安裝應用程序后不會改變?

我發現Secure.ANDROID_ID是最好的選擇。 這是在設備首次啟動時生成並存儲的64位數量。 但它會重置設備出廠重置。

有一些報告顯示某些設備在所有實例上都具有相同的Secure.ANDROID_ID。

我們可以向Secure.ANDROID_ID添加額外的項目(如SIM序列,GCM實例ID或...)並生成新的唯一指紋。

可以在Android設備上設置多個用戶,並且對於同一Android設備上的每個用戶, Secure.ANDROID_ID都是不同的。 因此,使用Secure.ANDROID_ID意味着單個設備將被注冊為設備上每個用戶設置的不同設備。

Secure.ANDROID_ID是您唯一的朋友。 然而,它在舊(<2.3)設備上存在一些問題(空結果)。 所有其他ID不適用於所有類型的設備。

另請閱讀是否有唯一的Android設備ID?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM