我有一个带有许多活动的 android 应用程序,以及一些创建的特定首选项文件。当用户退出我的应用程序时,我想绝对删除所有共享首选项。请理解我不能使用context.getSharedPreferences("A_PREFS_FILE", 0).edit().clear().commit()
它,因为它只会清除一个特定的文件。我想清除与我的应用关联的所有首选项文件。有没有办法做到这一点?
问问题
24909 次
7 回答
23
通过这种方式,您可以删除所有文件。通过 clear() 它将删除仍然存在的数据文件。
File sharedPreferenceFile = new File("/data/data/"+ getPackageName()+ "/shared_prefs/");
File[] listFiles = sharedPreferenceFile.listFiles();
for (File file : listFiles) {
file.delete();
}
在这里它将返回所有文件列表,然后您可以轻松删除..
于 2013-08-21T05:13:17.943 回答
11
只需输入以下代码,它对我来说非常适合......
getApplicationContext().getSharedPreferences("CREDENTIALS", 0).edit().clear().commit();
于 2013-08-21T04:40:06.067 回答
3
首先你必须clear
然后下一个调用commit
试试:
SharedPreference.Editor pref = context.getSharedPreferences("A_PREFS_FILE", 0).edit();
pref.clear();
pref.commit();
于 2013-08-21T04:35:41.923 回答
3
使用以下代码删除首选项键:
prefs.edit().remove("YOURTAG1").commit();
prefs.edit().remove("YOURTAG2").commit();
于 2013-08-21T05:10:26.837 回答
1
这有效
public static void deleteAllDataInSharedPreference(Context context){
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = preferences.edit();
editor.clear();
editor.commit();
context = null;
}
deleteAllDataInSharedPreference(getApplicationContext());
于 2021-11-21T10:39:51.843 回答
1
SharedPreferences 目录路径:Environment.getDataDirectory() + "/data/" + ActivateAccountActivity.this.getPackageName() + "/shared_prefs"
使用“ for ”循环删除所有文件,如下所示:
File sprefs_directory = new File(Environment.getDataDirectory() + "/data/" + context.getPackageName() + "/shared_prefs");
File[] files = filesirectory.listFiles();
for(File file : files) {
file.delete();
}
于 2020-05-31T15:28:03.843 回答
0
为什么不使用 SharedPreference 来跟踪所有相关文件;然后,在 onPause 或 onStop 中,将该值解析为 SharedPreferences.Editor.clear().commit() 他们每个人......然后删除最后一个?
于 2013-08-21T04:27:23.750 回答