Cómo comprobar si existe o no el archivo SharedPreferences

Estoy buscando una Android Preferencias compartidas y me pregunto si hay una manera de comprobar si el archivo de preferencias existe.

SharedPreferences mySharedPreferences ; mySharedPreferences=getSharedPreferences(“Name_of_your_preference”,mode); 

Este código anterior me lleva a creer que "Name_of_Your_preferene" se almacena como un archivo o algún tipo de contenedor que contendrá sus preferencias.

Me pregunto que hay lejos para comprobar si esto existe o no. Cuando un usuario carga una actividad, quiero guardar todas las configuraciones en este archivo con algunos valores predeterminados (desactivado para todos los ajustes). Sin embargo, sólo quiero hacer esto si van a la página por primera vez.

De lo contrario si yo haría algo como esto cada vez que la página se carga

 SharedPreferences.Editor editor= mySharedPreferences.edit(); /* now store your primitive type values. In this case it is true, 1f and Hello! World */ editor.putBolean(“myBoolean”,true); editor.putFloat(“myFloat”,1f); editor.putString(“myString”,” Hello! World”); 

Estoy adivinando que anularía todos los ajustes incluso los que establecen.

Las SharedPreferences se guardan en un archivo xml. Puede encontrarlo en /data/data/your_application_package/shared_prefs/Name_of_your_preference.xml

Para comprobar si existe el Shared_Preferences 'Name_of_your_preference':

 File f = new File( "/data/data/your_application_package/shared_prefs/Name_of_your_preference.xml"); if (f.exists()) Log.d("TAG", "SharedPreferences Name_of_your_preference : exist"); else Log.d("TAG", "Setup default preferences"); 

Saludos.

Puede utilizar el método contains en el objeto SharedPreferences para comprobar si una de sus claves de preferencia existe en el archivo. Si esto devuelve false , puede suponer que es la primera vez y llenar los valores predeterminados. La documentación para este método está aquí .

No pude encontrar ninguna manera de comprobar si un archivo de preferencia ya existe (se creará automáticamente la primera vez que se recupera un editor), pero este método debe hacer el truco.

No tuve suficientes representantes para comentar el post de natur3. Por lo tanto, esta respuesta.

@ Natur3: Muy útil, gracias. Hade un pequeño problema sin embargo … con el sufijo del archivo. Si defino mi nombre de archivo como este:

  private static final String FILENAME = "myPrefs"; 

Y luego usar:

  File f = new File("/data/data/" + getPackageName() + "/shared_prefs/" + FILENAME); 

F.exists () devolverá false aunque el archivo exista en el sistema de archivos. Esto se debe a que Android añadirá el sufijo ".xml" automáticamente al escribir SharedPreferences, así que tuve que hacer que mi referencia de archivo fuera así:

  File f = new File("/data/data/" + getPackageName() + "/shared_prefs/" + FILENAME + ".xml"); 

Para que funcione. No sé de dónde obtuvo su sufijo "_preferences.xml".

Me las arreglé para averiguarlo explorando el sistema de archivos del emulador en Eclipse usando Window-> Show View-> Other … y luego seleccionando "File Explorer".

Lo hice de esta manera por lo que su imo adaptable.

 File f = new File("/data/data/" + getPackageName() + "/shared_prefs/" + getPackageName()+ "_preferences.xml"); if(f.exists()) { //do stuff`enter code here` } 

He utilizado esto en un proceso de validación en el onCreate si las preferencias existen o no y dependiendo de la respuesta habilitar un botón para borrar las preferencias o no – sólo verificar qué el nombre de su archivo de preferencia está en DDMS si no se nombra manualmente.

En lugar de codificar el "/ data / data /" camino que puede hacer esto:

 public boolean preferenceFileExist(String fileName) { File f = new File(getApplicationContext().getApplicationInfo().dataDir + "/shared_prefs/" + fileName + ".xml"); return f.exists() } 

La forma más fácil que he encontrado, podemos comprobar si la preferencia compartida existe por un código incorporado en android

  sharePrefName.contains(String key) // as if (userData.contains("name")){Toast // Your data is already here!} 

Comprueba si las preferencias contienen una preferencia. (Es el método público booleano abstracto)

Simple y fácil 🙂

  • El MODE_MULTI_PROCESS de SharedPreferences es menos seguro que MODE_PRIVATE
  • Cómo cambiar los valores en la preferencia compartida
  • Cómo almacenar y recuperar (clave, valor) tipo de datos utilizando las preferencias guardadas android
  • Configuración de usuario guardada en SharedPreferences eliminada o perdida entre recargas de la aplicación
  • Android: No se puede acceder a SharedPreference de otra aplicación
  • Guardar un arraylist de cadenas a las preferencias compartidas
  • ¿Preferencias compartidas? Javax.crypto.BadPaddingException: bloque de pad corrompido sólo en algunos dispositivos
  • Diferencia entre las preferencias compartidas y los proveedores de contenido en android
  • Cómo guardar un mapa hash en Preferencias compartidas
  • Actualizaciones de Android en Play Store
  • Acceso a SharedPreferences mediante métodos estáticos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.