如何删除应用程序的SharedPreferences数据?

我正在创建一个使用大量web服务来同步数据的应用程序。出于测试目的,我需要在重新启动应用程序时删除一些SharedPreferences值。


当前回答

在类定义中:

private static final String PREFERENCES = "shared_prefs";

private static final SharedPreferences sharedPreferences  = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);

类内部:

public static void deleteAllSharedPrefs(){
    sharedPreferences.edit().clear().commit();
}

其他回答

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

从任意类中集中清除所有SharedPreferences:

public static SharedPreferences.Editor getEditor(Context context) {
    return getPreferences(context).edit();
}

然后从任何类:(commit返回一个布尔值,你可以检查你的Preferences是否被清除)

Navigation.getEditor(this).clear().commit();

或者你可以用apply;返回为空

Navigation.getEditor(this).clear().apply();

对于Kotlin用户来说,这相当简单:

val sharedPref = context.getSharedPreferences("myPref", Context.MODE_PRIVATE)
 sharedPref.edit().clear().apply()

要删除一个特定的值,

SharedPreferences。编辑器删除(字符串键)后跟commit()或apply()

要删除所有值, SharedPreferences。编辑器clear()后面跟着commit()或apply()

即使没有根电话,也可以使用adb shell来完成此任务。唯一的问题是应用程序必须是可调试的。

run-as <your package name> <command>

例如:

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

或者,你可以只做上面的操作,但不使用命令,该命令将引导你到应用程序包的根目录,并允许你在应用程序的上下文中执行更多命令。