如何删除应用程序的SharedPreferences数据?
我正在创建一个使用大量Web服务来同步数据的应用程序。出于测试目的,我需要在重新启动应用程序时清除一些SharedPreferences值。
答案 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本身清除应用数据和撤消权限的功能,只需单击一个按钮即可。
答案 14 :(得分:3)
要从首选项中删除键值对,您可以轻松地执行以下操作
getActivity().getSharedPreference().editor().remove("key").apply();
我还开发了用于轻松控制共享首选项的库。您可能会找到以下链接
答案 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()
答案 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设备或一个实际的有根手机/平板电脑等。