studio programacion herramientas fundamentos con avanzado aplicaciones android preferences android-preferences

programacion - manual de android en pdf



Android: ¿Viendo el archivo SharedPreferences? (2)

Para fines de depuración, necesito acceder al archivo de preferencias compartidas de mi aplicación. Por lo que sé, debería encontrar este archivo en / data / ... pero no puedo acceder a la carpeta / data a través de los permisos faltantes. ¿Esto es normal? ¿Alguna forma de seguir accediendo al archivo? (¿excepto tal vez eliminarlo desde dentro de la aplicación?) El teléfono no está rooteado y tampoco quiero rootearlo. Gracias por cualquier pista!


Desafortunadamente, no hay una buena forma de acceder a la carpeta / data en un teléfono sin rootear. Puede intentar crear los archivos con MODE_WORLD_READABLE manera:

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

y luego intente usar adb pull para obtener el archivo en el escritorio.

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

pero tu kilometraje puede variar.


Me he topado con este problema en el pasado (no tengo permiso de root en el sistema de archivos pero necesito acceso a la carpeta de datos de las aplicaciones). Si no tiene un dispositivo rooteado o un dispositivo desarrollador como ADP1, puede intentar ejecutar su aplicación en el emulador y luego acceder a los archivos desde el "Explorador de archivos" en eclipse o DDMS.

EDITAR # 1: intente usar la función getAll de sharedPreferences y guardar eso en un archivo, veré si puedo reunir una muestra.

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

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

puesto en tu 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 One Two Three