删除共享首选项

时间:2010-09-10 18:34:52

标签: android sharedpreferences

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

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

27 个答案:

答案 0 :(得分:796)

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

要删除所有SharedPreferences.Editor.clear()后跟commit()

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

答案 1 :(得分:152)

我的解决方案:

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

答案 2 :(得分:111)

删除所有偏好设置:

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

答案 3 :(得分:55)

如果没有必要每次都删除,您可以从以下地方手动删除它:

  

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

较新版本的Android:

  

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

答案 4 :(得分:16)

似乎所有解决方案都没有完全正常工作或完全失效

清除活动中的所有SharedPreferences

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

在onCreate

之后从主活动中调用此方法

注意*我用过

.apply()

而不是

.commit()

您可以自由选择commit();

答案 5 :(得分:11)

即使没有root手机,您也可以使用adb shell执行此操作。唯一的问题是app必须是可调试的。

run-as <your package name> <command>

例如:

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

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

答案 6 :(得分:8)

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

答案 7 :(得分:7)

中的

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

答案 8 :(得分:6)

试试这段代码:

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

答案 9 :(得分:6)

全部清除:

NgbModule

答案 10 :(得分:5)

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

答案 11 :(得分:5)

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

context.deleteSharedPreferences("YOUR_PREFS");

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

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

答案 12 :(得分:4)

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

adb shell pm clear <package name>

答案 13 :(得分:4)

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

插件:亚行创意

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

enter image description here

答案 14 :(得分:3)

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

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

我还开发了用于轻松控制共享首选项的库。您可能会找到以下链接

https://github.com/farruhha/SimplePrefs

答案 15 :(得分:3)

  • 要删除特定值,

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

  • 要删除所有值,

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

答案 16 :(得分:2)

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

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

答案 17 :(得分:2)

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

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

然后来自任何类:(提交返回布尔值,您可以检查您的首选项是否已清除)

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

或者:您可以使用Apply:它返回void             Navigation.getEditor(本).clear()应用();

答案 18 :(得分:1)

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

假设您正在运行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();
    }
}

答案 19 :(得分:0)

kotlin 中的一行代码:

getSharedPreferences("MY_PREFS_NAME", MODE_PRIVATE).edit().clear().apply()

答案 20 :(得分:0)

这是我的Kotlin方法:

      public fun clearAllSharedPrefs() {
            val sharedPreferences: SharedPreferences = MainApplication.applicationContext()
                .getSharedPreferences("MY_CUSTOME_KEY", Context.MODE_PRIVATE)
            sharedPreferences.edit().clear()
            sharedPreferences.edit().apply()
        }

答案 21 :(得分:0)

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

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

答案 22 :(得分:0)

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

cities <- c("Lausanne", "Zurich", "Geneva")

mylist <- list()

for (i in 1:length(cities)){
  for (city in cities){
    born <- paste0("Born in ", city)
    mylist[[i]] <- born
  }
}

Click here用于所有带有示例的共享首选项操作

答案 23 :(得分:0)

new File(context.getFilesDir(), fileName).delete();

我可以使用共享首选项删除文件

答案 24 :(得分:-2)

更新2018:

您可以使用PowerPreference

要清除应用中所有共享首选项文件中的所有数据,请执行以下操作:

PowerPreference.clearAll()

清除默认文件

PowerPreference.getDefaultFile().clear()

按名称清除特定文件

PowerPreference.getFileByName(fileName).clear()

https://github.com/AliEsaAssadi/Android-Power-Preference

答案 25 :(得分:-2)

您可以folders and file name从共享偏好设置中删除已保存的值。

答案 26 :(得分:-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

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