web-dev-qa-db-ja.com

Androidアンインストール後にSharedPreferencesを保持する方法はありますか?

一部のアプリケーションメタデータをSharedPreferencesに保持しています。アプリケーションをアンインストールして再インストールするたびに、SharedPreferencesが削除されます。

ユーザーがアンインストールして再インストールした場合に古いデータを復元できるように、それを維持する方法はありますか?

21
Victor Grazi

アプリにBackupAgentHelperを追加する必要があります。 SharedPreferenceBackupHelperと一緒に、SharedPreferencesをクラウドにバックアップします(デバイスがサポートしている場合)。アプリを再インストールすると、データが復元されます。

見る:

BackupAgentHelper

SharedPreferenceHelper(実装に必要なすべてのコードが含まれています)

一般的なバックアップガイド

17
Gabriel Ittner

Android 6.0以降、次のものを使用できるようになりました。

<application
        Android:allowBackup="true">

Trueに設定すると、データ(sharedprefsなど)がGoogleクラウドに保存され、次にアプリをインストールしたときに復元されます。あなたはそれについてもっと読むことができます ここ 。 6.0以降、default設定はtrueであることに注意してください。

18
Warpzit

SharedPreferencesはアプリと一緒に常に削除されると確信しています。私の意見では、これを行う最良の方法は、隠しファイル( ".nameOfFile"など)をSDカードまたは内部メモリに書き込み、そのファイルに設定も含めることです。

ただし、SharedPreferencesを使用する必要があります。これは、設定管理のAndroid標準です。アプリを初めてロードするときに、最後に作成された隠しファイルがないかSDカードをチェックするようにすることができます。ファイルが存在する場合は、それらの入力を読み込み、SharedPreferencesに保存します。存在しない場合は、ユーザーがファイルを削除したか、ユーザーがアプリをインストールしたことがありません。

これはそれを行うための1つの方法にすぎず、最も効率的ではないかもしれませんが、それが役立つことを願っています!

3
roboguy12

Edthethirdが言ったように、デバイスの外部ストレージに物理ファイルを置き、インストール時にそれらを読み取るのが最善です。ファイルの内容をユーザーから隠す必要がある場合は、単純な暗号化/復号化プロセスを実行するだけです。

2
Eitan Schwartz

これを行う1つの方法は、ユーザーデータをサーバーに保存することです。その後、ユーザーがアプリを再インストールするか、別のデバイスにアプリをインストールすると、ユーザーデータを「同期」できます。これは、データの小さなHTTPダウンロードであり、JSONに保存されている可能性があり、解析してSharedPreferencesに書き込みます。

独自のサーバーを維持したくない場合は、Dropboxのようなクラウドサービスを使用できます。これがアプリ1PasswordReaderの仕組みです。

2
louielouie

これは実際には組み込みであり、有効にするにはいくつかのクラスを実装する必要があります。データはバックアップされ、ユーザーのGoogleアカウントにリンクされるため、ユーザーが新しいデバイスにアプリをインストールしたり、再インストールしたりすると、データは自動的に復元されます。

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

1
Nikolay Elenkov

アンインストールすると、sharedPrefsとDBが削除されます。アプリの外部(たとえば、sd)に書き込む必要があります。

1
SoundsDangerous

2020年の時、私にはShared Storageは行く方法です。

Androidのデータとファイルストレージの概要

https://developer.Android.com/training/data-storage

ドキュメントとファイルの共有ストレージ

https://developer.Android.com/training/data-storage/shared/documents-files

0
h--n