¿Dónde almacenar las actualizaciones xml en la aplicación de Android empaquetada?
Frecuentes
Visto 125 equipos
-1
Supongo que estoy un poco confundido en cuanto a cómo se almacenan los archivos en una máquina real (o incluso en un emulador).
Mientras programo, puedo guardar mi archivo xml en la carpeta de activos manualmente, pero ¿cómo escribir una aplicación que tendrá que conectarse a la red y descargar el archivo, guardarlo en algún lugar y luego manipularlo? ¿Dónde almacenará dicho archivo?
Quiero crear un nuevo archivo, pero leí en otra publicación que la carpeta de activos como tal no está disponible una vez empaquetada; Entonces, ¿dónde se crean y almacenan? ¿Cómo se pueden transferir? Es solo que soy nuevo en esta plataforma y el sistema de archivos es un poco confuso.
3 Respuestas
0
Si desea usar XML actualizado, debe pensar en copiar los archivos de los activos al almacenamiento del dispositivo. Puedes echar un vistazo a ¿Cómo copiar archivos de la carpeta 'activos' a la tarjeta SD? para saber cómo se puede hacer esto.
Otra alternativa es usar la base de datos donde puede almacenar los datos analizados del XML. Para que no necesite analizar el archivo cada vez que necesite acceder a los contenidos.
contestado el 23 de mayo de 17 a las 13:05
0
Tiene dos opciones: llamar a getFilesDir() desde su actividad para obtener una ruta a la carpeta de datos interna que solo se puede leer/escribir desde su aplicación.
O bien, puede escribir/leer su archivo xml en un almacenamiento externo (tarjeta SD). Use el método Environment.getExternalStorageDirectory() para obtener la ruta raíz del almacenamiento externo, luego cree su propia carpeta como mejor le parezca.
Tenga en cuenta que si escribe en un almacenamiento externo, todas las aplicaciones del teléfono tendrán acceso a él.
Respondido 04 Jul 12, 06:07
0
Incluso yo enfrenté este problema. Ahora tengo un archivo xml que tiene propiedades de aplicación. Está empaquetado en la carpeta de activos. Una vez empaquetado, no podemos editar un archivo en la carpeta de activos. Ahora, al cargar la aplicación, solo copio este archivo en la ruta devuelta por
context.getFilesDir().getAbsolutePath();
Y la aplicación lo edita desde el mismo lugar. Puede ver si el archivo está modificado en el FileExplorer panel de DDMS vista. El archivo se almacena en la carpeta con el mismo nombre que el paquete de su aplicación, por ejemplo: com.abhi.maps
Alternativamente, también puede copiarlo a la tarjeta SD. Sin embargo, es arriesgado porque la tarjeta SD puede estar disponible todo el tiempo.
Puede usar el siguiente código para copiar el archivo de la carpeta de activos:
private static void copyFile(String filename, Context context) {
AssetManager assetManager = context.getAssets();
InputStream in = null;
OutputStream out = null;
try {
in = assetManager.open(filename);
String newFileName = context.getFilesDir() + "/" + filename;
out = new FileOutputStream(newFileName);
byte[] buffer = new byte[1024];
int read;
while ((read = in.read(buffer)) != -1) {
out.write(buffer, 0, read);
}
in.close();
in = null;
out.flush();
out.close();
out = null;
} catch (Exception e) {
Log.e("tag", e.getMessage());
}
}
¡Espero eso ayude! :)
Respondido 04 Jul 12, 07:07
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas android android-emulator filesystems or haz tu propia pregunta.