web-dev-qa-db-ja.com

共有設定を削除する

自分のアプリケーションのSharedPreferencesデータを削除する方法

私は、データを同期するために多くのWebサービスを使用するアプリケーションを作成しています。テストのために、アプリを再起動したときにSharedPreferencesの値を消去する必要があります。

427
Andrew

特定の値を削除するには: SharedPreferences.Editor.remove() の後にcommit()を付けます。

それらをすべて削除するには、SharedPreferences.Editor.clear()の後にcommit()を続けます。

戻り値を気にせず、アプリケーションのメインスレッドからこれを使用している場合は、代わりにapply()を使用することを検討してください。

789
Mark B

私の解決策:

SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
152
vaibhav vijay

すべての設定を削除します。

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();
111
zserghei

毎回削除する必要がない場合は、次の場所から手動で削除できます。

[設定] - > [アプリケーション] - > [アプリケーションの管理] - >(アプリを選択) - > [データの消去]または[アンインストール]

Androidの新しいバージョン:

設定 - >アプリケーション - >(アプリを選択してください) - >ストレージ - >データの消去とキャッシュの消去

54
Nobu

Android共有設定を1行で削除する:-)

context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit();

または、ノンブロッキング非同期操作の場合はapply

this.getSharedPreferences("YOUR_PREFS", 0).edit().clear().apply();
21
rubdottocom

すべての解決策が完全に機能しているわけでも、行き詰まっているわけでもないようです。

アクティビティ内のすべてのSharedPreferencesを消去する

      PreferenceManager.getDefaultSharedPreferences(getBaseContext()).
      edit().clear().apply();

OnCreateの後にメインアクティビティからこれを呼び出します。

note *私が使った

.apply()

の代わりに

.commit()

あなたはcommit()を自由に選択できます。

16
Shady Keshk

あなたは根ざした電話がなくてもこれを行うためにadbシェルを使うことができます。唯一の問題は、アプリはデバッグ可能でなければならないということです。

run-as <your package name> <command>

例えば:

run-as com.asdf.blah rm /data/data/com.asdf.blah/databases/myDB.db

あるいは、上記の手順を実行するだけで、アプリパッケージのルートに移動してアプリのコンテキストでより多くのコマンドを実行できるようにするコマンドを使用せずに実行できます。

11
Johnson Wong
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();
8

クラス定義内

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();
      }
7
sivi

それらをすべてクリアします。

PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()
6
Dan Alboteanu

このコードを試してください:

SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear().commit();
6
Mubashshir

API 24(Nougat)の時点であなたはただすることができます:

context.deleteSharedPreferences("YOUR_PREFS");

ただし、下位互換性はありません。したがって、24未満のものをサポートしている場合は、次のことを守ってください。

context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply(); 
5
afathman

デバイスを使って手動でアプリをアンインストールすることもできます。その後、アプリを再インストールすると、共有設定はリセットされました。

5
wizurd

それがあなたのテストのためであれば。 adbコマンドを使用できます。

adb Shell pm clear <package name>
4
Prakash

プリファレンスからキーと値のペアを削除するには、次の操作を簡単に行います。

getActivity().getSharedPreference().editor().remove("key").apply();

私は共有設定を簡単に操作するためのライブラリも開発しました。あなたは以下のリンクを見つけるかもしれません

https://github.com/farruhha/SimplePrefs

3
  • 特定の値を削除するには

SharedPreferences.Editor remove(String key) に続けてcommit()またはapply()

  • すべての値を削除するには

    SharedPreferences.Editor clear() 続いてcommit()またはapply()

3
Palak Jain

すべての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();が返されます。

2
Sufiyan Ansari
String prefTag = "someTag";
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext);
prefs.edit().remove(prefTag).commit();

これにより、 "someTag"という名前の保存された共有設定が削除されます。

1
Kiran k g

私は多くの共有設定キーを持っているので、答えはどれも私にとってはうまくいきません。

ユニットテストではなく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();
    }
}
1
Allen Wang
new File(context.getFilesDir(), fileName).delete();

私はそれと共有設定でファイルを削除することができます

0