自分のアプリケーションのSharedPreferencesデータを削除する方法
私は、データを同期するために多くのWebサービスを使用するアプリケーションを作成しています。テストのために、アプリを再起動したときにSharedPreferencesの値を消去する必要があります。
特定の値を削除するには: SharedPreferences.Editor.remove() の後にcommit()
を付けます。
それらをすべて削除するには、SharedPreferences.Editor.clear()
の後にcommit()
を続けます。
戻り値を気にせず、アプリケーションのメインスレッドからこれを使用している場合は、代わりにapply()
を使用することを検討してください。
私の解決策:
SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
すべての設定を削除します。
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().clear().commit();
単一の好みを削除する:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().remove("KeyName").commit();
毎回削除する必要がない場合は、次の場所から手動で削除できます。
[設定] - > [アプリケーション] - > [アプリケーションの管理] - >(アプリを選択) - > [データの消去]または[アンインストール]
Androidの新しいバージョン:
設定 - >アプリケーション - >(アプリを選択してください) - >ストレージ - >データの消去とキャッシュの消去
Android共有設定を1行で削除する:-)
context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit();
または、ノンブロッキング非同期操作の場合はapply
:
this.getSharedPreferences("YOUR_PREFS", 0).edit().clear().apply();
すべての解決策が完全に機能しているわけでも、行き詰まっているわけでもないようです。
アクティビティ内のすべてのSharedPreferencesを消去する
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).
edit().clear().apply();
OnCreateの後にメインアクティビティからこれを呼び出します。
note *私が使った
.apply()
の代わりに
.commit()
あなたはcommit()を自由に選択できます。
あなたは根ざした電話がなくてもこれを行うためにadbシェルを使うことができます。唯一の問題は、アプリはデバッグ可能でなければならないということです。
run-as <your package name> <command>
例えば:
run-as com.asdf.blah rm /data/data/com.asdf.blah/databases/myDB.db
あるいは、上記の手順を実行するだけで、アプリパッケージのルートに移動してアプリのコンテキストでより多くのコマンドを実行できるようにするコマンドを使用せずに実行できます。
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();
クラス定義内
private static final String PREFERENCES = "shared_prefs";
private static final SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);
クラス内
public static void deleteAllSharePrefs(){
sharedPreferences.edit().clear().commit();
}
それらをすべてクリアします。
PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()
このコードを試してください:
SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear().commit();
API 24(Nougat)の時点であなたはただすることができます:
context.deleteSharedPreferences("YOUR_PREFS");
ただし、下位互換性はありません。したがって、24未満のものをサポートしている場合は、次のことを守ってください。
context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply();
デバイスを使って手動でアプリをアンインストールすることもできます。その後、アプリを再インストールすると、共有設定はリセットされました。
それがあなたのテストのためであれば。 adbコマンドを使用できます。
adb Shell pm clear <package name>
プリファレンスからキーと値のペアを削除するには、次の操作を簡単に行います。
getActivity().getSharedPreference().editor().remove("key").apply();
私は共有設定を簡単に操作するためのライブラリも開発しました。あなたは以下のリンクを見つけるかもしれません
SharedPreferences.Editor remove(String key) に続けてcommit()またはapply()
すべての値を削除するには
SharedPreferences.Editor clear() 続いてcommit()またはapply()
すべてのSharedPreferencesを任意のクラスから一元的に消去するには
public static SharedPreferences.Editor getEditor(Context context) {
return getPreferences(context).edit();
}
どのクラスからでも:(自分の設定がクリアされたかどうかを確認できる場所で、戻り値のBooleanをコミットします)
Navigation.getEditor(this).clear().commit();
または:Applyを使用できます。void Navigation.getEditor(this).clear()。apply();が返されます。
String prefTag = "someTag";
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext);
prefs.edit().remove(prefTag).commit();
これにより、 "someTag"という名前の保存された共有設定が削除されます。
私は多くの共有設定キーを持っているので、答えはどれも私にとってはうまくいきません。
ユニットテストではなくAndroidテストを実行しているとしましょう。
それは私のために働いていて、すべての shared_prefs ファイルを通して削除します。
@BeforeClassはすべてのテストとActivityTestRuleの前に実行されます
@BeforeClass
public static void setUp() {
Context context = InstrumentationRegistry.getTargetContext();
File root = context.getFilesDir().getParentFile();
String[] sharedPreferencesFileNames = new File(root, "shared_prefs").list();
for (String fileName : sharedPreferencesFileNames) {
context.getSharedPreferences(fileName.replace(".xml", ""), Context.MODE_PRIVATE).edit().clear().commit();
}
}
new File(context.getFilesDir(), fileName).delete();
私はそれと共有設定でファイルを削除することができます