簡體   English   中英

如何在Android上的應用安裝之間保留數據?

[英]How to persist data between app installs on Android?

我以為會有一些直接的解決方案。

要求

  • 在應用程序安裝/卸載會話中唯一標識設備。

選項:

  1. 每次需要時都使用某種Android的設備標識符API(每次從Android的API讀取)。 根據Identififying-app-installations博客文章,這是不推薦的,不是可靠的解決方案。

  2. 生成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.

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