13

我有一个带有许多活动的 android 应用程序,以及一些创建的特定首选项文件。当用户退出我的应用程序时,我想绝对删除所有共享首选项。请理解我不能使用context.getSharedPreferences("A_PREFS_FILE", 0).edit().clear().commit()它,因为它只会清除一个特定的文件。我想清除与我的应用关联的所有首选项文件。有没有办法做到这一点?

4

7 回答 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 回答