2016-06-16 98 views
3

我需要一個設備標識符,該應用程序在卸載並重新安裝後仍然存在。我知道UUID類提供了一個標識符與方法ANDROID - 獲取持久性設備標識符(UUID)

String uniqueID = UUID.randomUUID().toString(); 

但Android指南不清楚它的範圍和持久性。在下一段中它說:

Android操作系統提供了許多具有不同行爲特徵的ID和您應該使用哪個ID取決於這些特徵如何與您的使用情況一起工作。但是這些特徵也會帶來隱私影響,所以瞭解這些特徵如何一起發揮很重要。

範圍

標識符範圍說明了哪些系統可以訪問標識符。 Android標識符範圍一般有三種:

單個應用程序。該ID在應用程序內部,而其他應用程序無法訪問。

應用程序組 - 可以通過預定義的一組相關應用程序訪問該ID。

設備 - 設備上安裝的所有應用都可以訪問該ID。 授予標識符的範圍越廣,它被用於跟蹤目的的風險就越大。相反,如果標識符只能由單個應用程序實例訪問,則不能用於在不同應用程序中跨越事務跟蹤設備。

重調和持久性

重調和持久性定義標識符的壽命和解釋它如何可被複位。常見的重置觸發器有:應用內重置,通過系統設置重置,重啓啓動,以及重置安裝。 Android的名稱可以有不同的壽命,但壽命通常與該ID是如何復位:

會話只 - 一個新的ID時將每個用戶重新啓動應用程序的時間。

安裝重置 - 每次用戶卸載並重新安裝應用程序時都會使用新ID。

FDR重置 - 每次用戶出廠重置設備時都會使用新的ID。

FDR-persistent - 該ID可以恢復出廠設置。

可重置性使用戶能夠創建與任何現有配置文件信息無關的新ID。這一點很重要,因爲更長且更可靠的標識符仍然存在(例如,在工廠重置等情況下),用戶可能遭受長期跟蹤的風險就越大。如果應用程序重新安裝時標識符被重置,則會降低持久性,並提供重置ID的方法,即使沒有明確的用戶控制從應用程序或「系統設置」中重置ID也是如此。

但我不知道如何獲得這些標識符,選擇我的範圍和持久性。 感謝

+0

那你最終決定使用? –

+0

我使用了Google提供的Instance ID,如果它在您取消應用程序後恢復,它似乎是最好的選擇,同樣如果我必須在我的應用程序中更改某些內容。 – leodev

+0

通過**實例ID **您的意思是ANDROID_ID? –

回答

0

我使用這個:

String DeviceId = Settings.Secure.getString(c.getContentResolver(), Settings.Secure.ANDROID_ID); 

看這個線程: Is there a unique Android device ID?

+0

ANDROID_ID不會在工廠重置期間持續存在。 – Solidak

+0

該解決方案提供了什麼樣的可重置性和持久性? –

+0

我認爲它一直持續到工廠重置爲阿卜杜拉或rom的改變。對我來說就夠了。我不知道系統更新是否也改變了它。 – David