Android: ¿Cómo ver el archivo SharedPreferences?

Para fines de depuración, necesito acceder al archivo de preferencias compartidas de mi aplicación. Por lo que sé que debería encontrar este archivo en / data / … pero no puedo acceder a la carpeta / data a través de permisos perdidos. ¿Esto es normal? ¿Algún modo de seguir accediendo al archivo? (Excepto tal vez raeding desde el interior de la aplicación?) El teléfono no está enraizada y yo también no quieren raíz. Gracias por cualquier pista!

He encontrado este problema en el pasado (no tener permiso de root en el sistema de archivos pero necesitando acceso a la carpeta de datos de aplicaciones). Si no tiene un dispositivo enraizado o un dispositivo de desarrollo como el ADP1, puede intentar ejecutar su aplicación en el emulador y luego acceder a los archivos desde el "Explorador de archivos" de eclipse o DDMS.

EDIT # 1: Intenta usar la función getAll de sharedPreferences y guardarla en un archivo, veré si puedo juntar una muestra.

EDIT # 2: Código de ejemplo, creado a partir de muestras aleatorias alrededor de la red, probablemente no es la mejor manera de hacerlo, pero lo probé y funciona. Escribe un archivo en la raíz de su tarjeta sd. Asegúrate de tener

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Establecido en su manifiesto

 private void saveSharedPreferences() { // create some junk data to populate the shared preferences SharedPreferences prefs = getSharedPreferences("MyPrefs", MODE_PRIVATE); SharedPreferences.Editor prefEdit = prefs.edit(); prefEdit.putBoolean("SomeBooleanValue_True", true); prefEdit.putInt("SomeIntValue_100", 100); prefEdit.putFloat("SomeFloatValue_1.11", 1.11f); prefEdit.putString("SomeStringValue_Unicorns", "Unicorns"); prefEdit.commit(); // BEGIN EXAMPLE File myPath = new File(Environment.getExternalStorageDirectory().toString()); File myFile = new File(myPath, "MySharedPreferences"); try { FileWriter fw = new FileWriter(myFile); PrintWriter pw = new PrintWriter(fw); Map<String,?> prefsMap = prefs.getAll(); for(Map.Entry<String,?> entry : prefsMap.entrySet()) { pw.println(entry.getKey() + ": " + entry.getValue().toString()); } pw.close(); fw.close(); } catch (Exception e) { // what a terrible failure... Log.wtf(getClass().getName(), e.toString()); } } 

Fuentes Uno Dos Tres

En un teléfono sin conexión no hay, por desgracia, ninguna buena manera de acceder a la carpeta / data. Puede intentar crear los archivos con MODE_WORLD_READABLE manera:

 SharedPreferences myPrefs = this.getSharedPreferences("prefs", MODE_WORLD_READABLE); 

A continuación, intente utilizar adb pull para obtener el archivo en el escritorio.

adb pull /data/data/<packagename>/shared_prefs/prefs.xml

pero tu kilometraje puede variar.

  • PreferenciaActividad: guardar valor como entero
  • ¿Es la lectura / escritura preferencias una operación costosa?
  • ¿Por qué Custom DialogPreference no se activa en onSharedPreferenceChanged?
  • Mostrar android: dialogMessage en un cuadro de diálogo ListPreference
  • Cómo utilizar PreferenceFragment?
  • ¿Se ha pulsado el botón de preferencia?
  • Cómo hacer que un cuadro de diálogo de PreferenciaActividad abra una ventana de diálogo para establecer una preferencia personalizada
  • Mailto de preferencias xml posible?
  • Utilizar una subclase personalizada de SharedPreferences con PreferenceActivity o PreferenceFragment
  • ¿Cómo obtengo las preferencias para trabajar en Android?
  • Pantalla de Preferencias de Android sin XML
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.