557

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

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

4

27 回答 27

966

要删除特定值:SharedPreferences.Editor.remove()后跟commit()

将它们全部删除,SharedPreferences.Editor.clear()然后是commit()

如果您不关心返回值并且您在应用程序的主线程中使用它,请考虑apply()改用。

于 2010-09-10T18:37:05.217 回答
199

我的解决方案:

SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
于 2011-12-07T05:39:38.130 回答
147

删除所有首选项:

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();
于 2013-03-29T07:56:33.013 回答
72

如果不需要每次都删除,可以手动删除:

设置->应用程序->管理应用程序->(选择您的应用程序)->清除数据或卸载

较新版本的安卓:

设置->应用程序->(选择您的应用程序)->存储->清除数据和清除缓存

于 2012-01-18T20:28:30.450 回答
28

在一行中删除 Android 共享首选项 :-)

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

或者apply对于非阻塞异步操作:

this.getSharedPreferences("YOUR_PREFS", 0).edit().clear().apply();
于 2015-08-27T08:24:55.713 回答
22

似乎所有解决方案都没有完全起作用或已经过时

清除 Activity 中的所有 SharedPreferences

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

在 onCreate 之后从 Main Activity 调用它

注意* 我用.apply()的不是.commit(),你可以自由选择 commit();

于 2016-03-15T10:37:02.460 回答
16

从 API 24 (Nougat) 开始,您可以这样做:

context.deleteSharedPreferences("YOUR_PREFS");

但是,没有向后兼容性,因此如果您支持小于 24 的任何内容,请坚持:

context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply(); 
于 2017-09-10T22:17:44.577 回答
11

即使没有根电话,您也可以使用 adb shell 来执行此操作。唯一的问题是应用程序必须是可调试的。

run-as <your package name> <command>

例如:

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

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

于 2013-03-10T06:03:24.593 回答
11
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();
于 2014-07-07T11:28:08.877 回答
11

在类定义中:

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();
}
于 2017-03-14T14:41:14.797 回答
10

您也可以使用您的设备手动卸载您的应用程序。然后,当您重新安装应用程序时,共享首选项已被重置。

于 2014-09-19T16:32:58.580 回答
9

全部清除:

PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()
于 2017-03-01T12:46:04.790 回答
7

试试这个代码:

SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear().commit();
于 2016-06-30T20:25:31.527 回答
6

您始终可以按照此处其他答案的建议以编程方式进行操作。但出于开发目的,我发现这Plugin非常有帮助,因为它显着加快了我的开发速度。

插件:亚行理念

它为您提供了从您的 Android Studio 本身清除应用程序数据撤销权限的功能,只需单击一个按钮。

在此处输入图像描述

于 2020-08-11T22:30:47.670 回答
5

如果是为了你的测试。您可以使用 adb 命令。

adb shell pm clear <package name>
于 2018-04-06T14:05:25.127 回答
5
String prefTag = "someTag";
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext);
prefs.edit().remove(prefTag).commit();

这将删除名称为“someTag”的已保存共享首选项。

于 2019-03-08T08:13:37.100 回答
4

要从任何类集中清除所有 SharedPreferences:

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

然后从任何类:(提交返回一个布尔值,您可以在其中检查您的首选项是否已清除)

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

或者你可以使用申请;它返回无效

Navigation.getEditor(this).clear().apply();
于 2016-12-16T12:25:47.707 回答
4

要从首选项中删除键值对,您可以轻松执行以下操作

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

我还开发了一个库,用于轻松操作共享偏好。您可能会找到以下链接

https://github.com/farruhha/SimplePrefs

于 2018-08-16T23:47:00.763 回答
3
  • 要删除特定值,

SharedPreferences.Editor remove(String key)后跟 commit() 或 apply()

  • 要删除所有值,

    SharedPreferences.Editor clear()后跟 commit() 或 apply()

于 2017-12-27T17:28:29.940 回答
3

对于 Kotlin 用户来说,这相当容易:

val sharedPref = context.getSharedPreferences("myPref", Context.MODE_PRIVATE)
 sharedPref.edit().clear().apply()
于 2021-08-10T17:12:13.730 回答
2

由于我有许多共享的首选项键,因此没有一个答案对我有用。

假设您正在运行 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();
    }
}
于 2019-02-07T11:26:20.870 回答
2

Kotlin ktx清除所有首选项的方式:

val prefs: SharedPreferences = getSharedPreferences("prefsName", Context.MODE_PRIVATE)
prefs.edit(commit = true) {
    clear()
}

单击此处查看所有带有示例的共享首选项操作

于 2019-12-03T10:06:28.750 回答
1
new File(context.getFilesDir(), fileName).delete();

我可以用它删除共享首选项中的文件

于 2019-01-08T14:02:45.783 回答
1

kotlin 中的一行代码:

getSharedPreferences("MY_PREFS_NAME", MODE_PRIVATE).edit().clear().apply()
于 2021-02-17T18:28:08.457 回答
0

这是我的Kotlin方法:

      public fun clearAllSharedPrefs() {
            val sharedPreferences: SharedPreferences = MainApplication.applicationContext()
                .getSharedPreferences("MY_CUSTOME_KEY", Context.MODE_PRIVATE)
            sharedPreferences.edit().clear()
            sharedPreferences.edit().apply()
        }
于 2021-08-07T21:35:55.377 回答
-2

您可以使用preferences.edit().remove("key").commit()从共享首选项中删除保存的值。

于 2015-07-01T07:38:57.477 回答
-5

今天早上刚做了这个。从命令提示符:

adb shell
cd /data/data/YOUR_PACKAGE_NAME/shared_prefs
rm * // to remove all shared preference files
rm YOUR_PREFS_NAME.xml // to remove a specific shared preference file

注意:这需要一个 root 设备,例如股票 Android 虚拟设备、Genymotion 设备或实际的 root 手机/平板电脑等。

于 2010-12-21T12:48:45.043 回答