В андроид есть ли способ сохранить SharedPreferences после удаления - PullRequest
21 голосов
/ 22 марта 2012

Я храню некоторые метаданные приложения в SharedPreferences. Всякий раз, когда я удаляю приложение и переустанавливаю его, SharedPreferences удаляются.

Есть ли способ сохранить это, чтобы, если пользователь удаляет и переустанавливает, он мог восстановить свои старые данные?

Ответы [ 7 ]

17 голосов
/ 22 марта 2012

Вы должны добавить BackupAgentHelper в ваше приложение. Вместе с SharedPreferenceBackupHelper он создает резервную копию SharedPreferences в облаке (если устройство поддерживает его). После переустановки приложения данные восстанавливаются.

См .:

BackupAgentHelper

SharedPreferenceHelper (содержит весь код, необходимый для его реализации)

Общее руководство по резервному копированию

16 голосов
/ 07 апреля 2016

Начиная с Android 6.0 стало возможным использовать:

<application
        android:allowBackup="true">

При установке значения true ваши данные (sharedprefs и другие) будут сохранены в облаке Google и восстановлены при следующей установке приложения.Вы можете прочитать больше об этом здесь .Следует отметить, что по умолчанию - это true с 6.0.

3 голосов
/ 22 марта 2012

Я уверен, что SharedPreferences всегда удаляется вместе с приложением.На мой взгляд, лучший способ сделать это - записать скрытый файл (что-то вроде «.nameOfFile») на SD-карту или во внутреннюю память и иметь в нем также настройки.

Вы должны использовать SharedPreferences, хотя это стандарт Android для управления предпочтениями.Вы можете сделать так, чтобы при первой загрузке приложения оно проверяло SDCard на наличие скрытого файла, который был бы создан при последнем открытии.Если файл существует, то прочитайте эти входные данные и сохраните их в SharedPreferences, если это не так, то либо пользователь удалил его, либо пользователь никогда не устанавливал ваше приложение раньше.

Это только один из способовсделать это, и это может быть не самым эффективным, но я надеюсь, что это поможет!

2 голосов
/ 17 июля 2012

Как сказал edthethird: лучше всего положить физические файлы на внешнее хранилище устройства и прочитать их при установке. Если содержимое файла необходимо скрыть от пользователей, просто выполните простой процесс шифрования / дешифрования.

2 голосов
/ 22 марта 2012

Один из способов сделать это - сохранить пользовательские данные на сервере.Затем, когда пользователь переустанавливает приложение или устанавливает приложение на другое устройство, он может «синхронизировать» свои пользовательские данные.Это будет просто небольшая загрузка по HTTP данных, которые, вероятно, хранятся в JSON, которые вы затем будете анализировать и записывать в SharedPreferences.

Если вы не хотите поддерживать свой собственный сервер, вы можете использоватьоблачный сервис типа Dropbox.Так работает приложение 1Password Reader.

1 голос
/ 22 марта 2012

Это на самом деле встроенный, вам просто нужно реализовать пару классов, чтобы включить его.Данные будут сохранены и привязаны к учетной записи Google пользователя, поэтому они будут автоматически восстановлены, если они установят приложение на новое устройство, переустановят его и т. Д.

http://developer.android.com/guide/topics/data/backup.html

1 голос
/ 22 марта 2012

sharedPrefs и БД удаляются при удалении. Вы должны написать за пределами приложения (например, SD).

...