如何删除共享偏好数据从应用程序在安卓

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

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

481825 次浏览

要删除特定的值:SharedPreferences.Editor.remove () + commit()

SharedPreferences.Editor.clear() + commit()

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

今早刚做过。从命令提示符:

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设备,或实际根手机/平板电脑等。

我的解决方案:

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

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

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

. 0

更新版本的Android:

Settings -> Applications ->(选择你的应用)-> Storage ->清除数据 and Clear cache

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

run-as <your package name> <command>

例如:

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

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

删除所有首选项:

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();
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();

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

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

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

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之后的Main Activity调用这个

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

试试下面的代码:

SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear().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();

清除它们:

PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()

在类定义中:

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

根据API 24(牛轧糖),你可以这样做:

context.deleteSharedPreferences("YOUR_PREFS");

然而,没有向后兼容性,所以如果你支持小于24的版本,请坚持使用:

context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply();
  • 要删除一个特定的值,

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

  • 删除所有值,

    SharedPreferences。编辑clear ()后跟一个commit()或apply()

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

adb shell pm clear <package name>

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

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

我还开发了一个库,用于方便地操作共享首选项。你可以找到下面的链接

https://github.com/farruhha/SimplePrefs

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

我可以在共享首选项中删除文件

没有一个答案适合我,因为我有很多共享的首选项键。

假设你正在运行一个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();
}
}
String prefTag = "someTag";
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext);
prefs.edit().remove(prefTag).commit();

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

< em >芬兰湾的科特林ktx < / em >方式到清除所有首选项:

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

点击这里为所有共享首选项操作的示例

你总可以用程序来做就像这里其他答案所建议的那样。但出于开发目的,我发现Plugin非常有用,因为它显著加快了我的开发速度。

插件:# EYZ0

它为您提供功能清除应用数据撤销许可从您的Android工作室本身,只需点击一个按钮。

enter image description here

kotlin中的一行代码:

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

这是我的<强> # EYZ0 < / >强方法:

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

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

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

我的回答:

在Java中:

SharedPreferences myPrefs = context.getSharedPreferences("My_Pref", Context.MODE_PRIVATE);
myPrefs.edit().remove("my_key").apply();

在芬兰湾的科特林:

val myPrefs = context.getSharedPreferences("My_Pref", Context.MODE_PRIVATE)
myPrefs.edit().remove("my_key").apply()

芬兰湾的科特林:

  var prefs2: SharedPreferences? = context!!.getSharedPreferences("loginFB", 0)
prefs2!!.edit().remove("email").commit()