Answers:
删除特定值:SharedPreferences.Editor.remove()后跟一个commit()
要删除所有这些,SharedPreferences.Editor.clear()
然后删除commit()
如果您不关心返回值,并且正在应用程序的主线程中使用此值,请考虑使用apply()
代替。
我的解决方案:
SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
"text"
。
删除所有首选项:
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();
KeyName
?
如果不需要每次都删除它,则可以从以下位置手动删除它:
设置->应用程序->管理应用程序->(选择应用程序)->清除数据或卸载
较新的Android版本:
设置->应用程序->(选择应用程序)->存储->清除数据并清除缓存
一行删除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();
您甚至可以在没有根电话的情况下使用adb shell来执行此操作。唯一的问题是该应用程序必须是可调试的。
run-as <your package name> <command>
例如:
run-as com.asdf.blah rm /data/data/com.asdf.blah/databases/myDB.db
或者,您可以执行上述操作,但不执行将命令定向到应用程序包根目录并允许您在应用程序上下文中执行更多命令的命令。
run-as
。您以为3年后我会发现这个的……
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();
全部清除:
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();
}
要从首选项中删除键值对,您可以轻松地执行以下操作
getActivity().getSharedPreference().editor().remove("key").apply();
我还开发了用于轻松控制共享首选项的库。您可能会发现以下链接
要从任何类集中清除所有SharedPreferences:
public static SharedPreferences.Editor getEditor(Context context) {
return getPreferences(context).edit();
}
然后从任何类中:(commit返回一个布尔值,您可以在其中检查是否清除了“首选项”)
Navigation.getEditor(this).clear().commit();
或者您可以使用apply; 它返回空
Navigation.getEditor(this).clear().apply();
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();
}
}
您可以用来preferences.edit().remove("key").commit()
从共享的首选项中删除保存的值。
今天早上刚做。在命令提示符下:
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设备或实际有根目录的手机/平板电脑等。
/data/data
直接访问!
su
之后adb shell
才能打开特权shell。