Respuestas:
Para eliminar valores específicos: SharedPreferences.Editor.remove () seguido de uncommit()
Para eliminarlos todos SharedPreferences.Editor.clear()
seguidos de uncommit()
Si no le importa el valor de retorno y lo está usando desde el hilo principal de su aplicación, considere usarlo en su apply()
lugar.
Mi solución:
SharedPreferences preferences = getSharedPreferences("Mypref", 0);
preferences.edit().remove("text").commit();
"text"
.
Eliminar todas las preferencias:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().clear().commit();
Eliminar preferencia única:
SharedPreferences settings = context.getSharedPreferences("PreferencesName", Context.MODE_PRIVATE);
settings.edit().remove("KeyName").commit();
KeyName
?
Si no es necesario eliminarlo cada vez, puede eliminarlo manualmente desde:
Configuración -> Aplicaciones -> Administrar aplicaciones -> (elija su aplicación) -> Borrar datos o Desinstalar
Nuevas versiones de Android:
Configuración -> Aplicaciones -> (elija su aplicación) -> Almacenamiento -> Borrar datos y Borrar caché
Eliminar las preferencias compartidas de Android en una línea :-)
context.getSharedPreferences("YOUR_PREFS", 0).edit().clear().commit();
O apply
para una operación asincrónica sin bloqueo:
this.getSharedPreferences("YOUR_PREFS", 0).edit().clear().apply();
Parece que toda la solución no funciona por completo o está muerta
para borrar todas las preferencias compartidas en una actividad
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().clear().apply();
Llame a esto desde la actividad principal después de onCreate
nota * que usé en .apply()
lugar de .commit()
, eres libre de elegir commit ();
Puede usar el shell adb para hacer esto incluso sin un teléfono rooteado. El único inconveniente es que la aplicación debe ser depurable.
run-as <your package name> <command>
Por ejemplo:
run-as com.asdf.blah rm /data/data/com.asdf.blah/databases/myDB.db
Alternativamente, puede hacer lo anterior pero sin el comando que lo dirigirá a la raíz del paquete de la aplicación y le permitirá ejecutar más comandos en el contexto de la aplicación.
run-as
. Uno pensaría que habría encontrado esto después de 3 años ...
Editor editor = getSharedPreferences("clear_cache", Context.MODE_PRIVATE).edit();
editor.clear();
editor.commit();
A partir de API 24 (Turrón), solo puede hacer:
context.deleteSharedPreferences("YOUR_PREFS");
Sin embargo, no hay compatibilidad con versiones anteriores, por lo que si admite menos de 24, siga con:
context.getSharedPreferences("YOUR_PREFS", Context.MODE_PRIVATE).edit().clear().apply();
Despejarlos a todos:
PreferenceManager.getDefaultSharedPreferences(context).edit().clear().apply()
También puede desinstalar manualmente su aplicación usando su dispositivo. Luego, cuando reinstalas tu aplicación, las preferencias compartidas se restablecen.
En las definiciones de clase:
private static final String PREFERENCES = "shared_prefs";
private static final SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);
Dentro de la clase:
public static void deleteAllSharedPrefs(){
sharedPreferences.edit().clear().commit();
}
Prueba este código:
SharedPreferences sharedPreferences = getSharedPreferences("fake", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sharedPreferences.edit();
edit.clear().commit();
SharedPreferences.Editor remove (String key) seguido de commit () o apply ()
Para eliminar todos los valores,
SharedPreferences.Editor clear () seguido de commit () o apply ()
Para eliminar los pares de valores clave de la preferencia, puede hacer fácilmente lo siguiente
getActivity().getSharedPreference().editor().remove("key").apply();
También he desarrollado una biblioteca para manipular fácilmente las preferencias compartidas. Puede encontrar el siguiente enlace
Para borrar todas las preferencias compartidas centralmente de cualquier clase:
public static SharedPreferences.Editor getEditor(Context context) {
return getPreferences(context).edit();
}
Y luego de cualquier clase: (commit devuelve un Boolean donde puede verificar si sus Preferencias se borraron o no)
Navigation.getEditor(this).clear().commit();
O puede usar aplicar; vuelve vacío
Navigation.getEditor(this).clear().apply();
new File(context.getFilesDir(), fileName).delete();
Puedo eliminar el archivo en las preferencias compartidas con él
Ninguna de las respuestas funciona para mí, ya que tengo muchas claves de preferencias compartidas.
Digamos que está ejecutando una prueba de Android en lugar de una prueba unitaria.
Me está funcionando en bucle y eliminar a través de todos los archivos shared_prefs .
@BeforeClass se ejecutará antes de todas las pruebas y 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();
}
}
La forma Kotlin ktx de borrar todas las preferencias:
val prefs: SharedPreferences = getSharedPreferences("prefsName", Context.MODE_PRIVATE)
prefs.edit(commit = true) {
clear()
}
Haga clic aquí para ver todas las operaciones de preferencias compartidas con ejemplos
Puede usar preferences.edit().remove("key").commit()
para eliminar los valores guardados de las preferencias compartidas.
Acabo de hacer esto esta mañana. Desde un símbolo del sistema:
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
NOTA : Esto requiere un dispositivo rooteado, como los dispositivos virtuales Android existentes, un dispositivo Genymotion o un teléfono / tableta rooteado real, etc.
/data/data
directamente!
su
después adb shell
para abrir un shell privilegiado.