2014-10-02 123 views
1

是否有可用於應用程序安裝的ID?Android - 安裝應用程序時唯一的ID

獨特的設備我的意思是,所以如果同一個應用程序安裝在10個不同的設備上,那麼有10個不同的ID。同一設備上的兩個不同應用程序必須提供兩個不同的ID。

需要在應用程序更新後保持不變,如果您卸載並重新安裝應用程序,理想情況下會更改。

出於安全原因,我不想生成UUID並將其寫入應用程序專用存儲中的文件。

+0

有。您可以使用[此庫](https://github.com/delight-im/Android-BaseLib)生成一個完全符合您需要的ID:[Identity.getInstallationId(context)](https:// github。 COM /喜悅-IM/Android的BaseLib /斑點/主/源/ SRC/IM /喜悅/機器人/ baselib/Identity.java)。 – caw 2015-03-08 22:43:05

+0

謝謝但不符合標準。我說「爲了安全起見,我不想生成UUID並將其寫入應用程序專用storage_中的文件」,但'writeInstallationId'方法完全符合這個要求 – 2015-03-10 09:35:22

+0

那麼,這對安裝設備只會產生安全隱患,對?如果這是一個問題,好吧。那麼你肯定不能使用任何特定於應用程序的標識符,並且你必須使用設備標識符。 – caw 2015-03-10 17:20:20

回答

0

我的解決方案是使用Android SharedPreferencesBackupHelper類和BackupAgentHelper。無需將UUID存儲在應用程序專用存儲中的文件中(儘管我不確定您的安全約束是什麼,因此使用SharedPreferences數據庫可能不會更好)。這個解決方案允許你擁有一個設備/安裝唯一的ID,並且它可以通過應用卸載和安裝(我通常認爲它是一件好事)繼續存在。如果您的應用程序在運行時已經重新安裝,則該應用程序可以在此時生成新的UUID。

這樣做的一種方法是查看您應用程序的已安裝資源包中的指示器文件,該文件是.apk的一部分。如果應用程序看到這個文件,這是一個新的安裝:生成/存儲UUID,然後刪除文件(或更改其內容)。隨後的執行會發現這一點,並認識到這不是一個新的安裝。

這是否符合您的需求?

+0

謝謝,但沒有 - 我希望Android會給我一個ID。我不想堅持它在orefs或磁盤上的一些有點奇怪的安全原因。 – 2014-10-02 03:59:24

+0

@PaulHilliar我認爲你給自己一個不可能完成的任務。您需要的是一種Android安裝指紋,它可以根據需要提供給您的應用程序,但無法由其他應用程序知道。但Android本身必須能夠堅持下去,以便按需提供。我不認爲存在符合您參數的ID。 – alpartis 2014-10-02 04:33:47

+0

是'安裝指紋'正是我想要的 - 這是一個很好的名字。Android提供這樣一個ID是完全可行的,只是有點惱人,他們選擇不實施它。 – 2014-10-02 13:22:26

0

Google提供Advertising ID作爲跨所有設備/用戶的唯一標識符,適用於所有Google Play設備API 9或更高版本。

還有一些其他機制,如使用this (pre-advertising ID) blog post中詳述的Settings.SECURE.ANDROID_ID。注意從博客文章的評論上ANDROID_ID雖然:

有缺點:首先,它是不是在Android 2.2之前(即「Froyo」)的版本100%可靠。此外,出現了至少一個廣泛觀察的錯誤在一個受歡迎的手機主要製造商,其中每個實例都具有相同的ANDROID_ID。

+0

謝謝,但是不是相同設備/用戶上的所有應用都具有相同的廣告ID?我想識別應用程序安裝。同一設備上的兩個不同應用程序必須提供兩個不同的ID – 2014-10-02 04:11:20

+0

因此,請將包名稱添加到廣告ID,並且它在每個應用程序中都是唯一的。 – ianhanniballake 2014-10-02 04:14:06

+0

這是一個ID,但我希望在手機上有其他應用不易知道的東西 – 2014-10-03 04:54:36