[英]How to persist data between app installs on Android?
我以為會有一些直接的解決方案。
要求 :
選項:
每次需要時都使用某種Android的設備標識符API(每次從Android的API讀取)。 根據Identififying-app-installations博客文章,這是不推薦的,不是可靠的解決方案。
生成UUID一次(在第一個應用程序啟動時)並將其保留在某處,以便在多個應用程序安裝/卸載中保留它。 這個“ 某處某處 ”部分是神秘的。 存儲在SD卡或雲上的解決方案不是一種選擇。 iOS有鑰匙串,可以用於這種東西,但我沒有發現Android相當於它。
我的其他選擇是什么? 我更喜歡使用(2)路由,因為我的服務器實現(服務器第一次生成UUID,如果不存在)。 但如果它不是一個選項,我可以回退到(1)並修改服務器。
謝謝。
要在應用程序安裝/重新安裝之間唯一標識應用程序,您需要獲取它的hardware ID
並將其用作您的憑據/密鑰。
要獲取hardwareID,您可以使用以下方法:
public static String getHardwareId(Context context) {
return Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
}
它與UUID部分等效,但有以下異常: 如果在設備上執行恢復出廠設置,則該值可能會更改。
我稱之為“部分等效”的原因是:HardwareID是64位數字(作為十六進制字符串),在用戶首次設置設備時隨機生成,並且應該在用戶設備的生命周期內保持不變。 如果在設備上執行恢復出廠設置,則該值可能會更改。 注意:當設備有多個用戶(在運行Android 4.2或更高版本的某些設備上可用)時,每個用戶都顯示為完全獨立的設備,因此ANDROID_ID值對每個用戶都是唯一的。
但這會遇到第二個問題:在哪里以及如何存儲它; 將它存儲在SharedPreferences中是沒用的,因為如果卸載了應用程序則擦除它。 對於/data/data/your.package.name/my_stored_keys文件夾也是如此,因為在卸載過程中也會從手機中刪除該文件夾。
如果您希望在卸載和重新安裝應用程序之間保持不變,則需要將其保存在服務器端。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.