2013-02-15 254 views
2

我現在面臨一個大問題。如在Android的官方參考發現: http://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_IDSettings.Secure.ANDROID_ID不是唯一的,如何解決?


公共靜態最終字符串ANDROID_ID

*在API級別3

一個64位數字(如十六進制字符串),其是在設備的首次啓動時隨機生成,並應在設備的整個生命週期內保持不變。 (如果在設備上執行出廠復位的值可能會改變。) 常數值:「android_id」 *


但超過500片劑出售(A10全志)ANDROID_ID是不是真的隨機產生和我看到(從我的Web服務日誌中)幾個設備具有相同的編號

爲什麼?

我該如何解決這個問題?我怎樣才能生成一個唯一的ID?假設所有設備的序列號始終相同(Same serial number on several android devices. Adb is useless. How can I change the serial number?),並且MAC地址不能始終可用。

+0

你使用這個數字爲什麼需要唯一性? – CodesInChaos 2013-02-15 11:17:24

+0

我的應用程序使用C#Web服務來獲取更新,發送數據...因此,在Web服務中,我想識別出售的每臺平板電腦。如果兩個或更多平板電腦具有相同的識別號碼,這是個大問題! – 2013-02-15 11:19:33

+2

同樣值得注意的是,如果您的用戶重置爲出廠默認值,Android ID將被重置。 – Elemental 2013-02-15 11:24:39

回答

6

一般來說這是Android的一個嚴重問題 - 看起來Android ID是最好的選擇,但正如你注意到幾個重要的供應商已經做了一個混亂的實施。

通過類似的要求面對我已經使用了這些值的散列:

  • 電話號碼/ SIM卡號碼(如果可用或者只是使用零)
  • 的Android ID
  • MAC地址(如果可用或只是使用零)

在我有限的經驗(使用數百個設備),這種組合已經足夠實現你需要的獨特性。

更新2017年 從Android的6 Mac地址出於安全原因返回一個恆定值 - 但是在android系統android的ID的幾乎所有新的實現似乎是可靠的唯一的,這樣,除非您的目標較舊的版本中,你就沒有使用這種技術的動機。

+0

類似的東西? http://www.java2s.com/Code/Android/Core-Class/getUniqueIDfromandroidproviderSettingsSecureandROIDID.htm – 2013-02-15 11:32:01

+0

是這樣的東西 - 雖然一個常見的很好理解的散列算法會更好地結合結果。 – Elemental 2013-02-15 13:09:24

+0

有什麼具體的建議? :) – 2013-02-15 14:23:57

相關問題