PDA

Ver la Versión Completa : [ CONSULTA ] Carpeta con archivos de la aplicacion


pablogarcia013
20/02/13, 13:34:11
Buenas! Vuelvo con otra dudilla:

Estoy realizando una aplicacion y segun he leido, por cada .apk que se instala en el movil se crea una carpeta en /data/data (no se si estoy en lo cierto)
He intentado buscar esa carpeta en el movil y solo me sale el primer data y dentro ni rastro de ningun archivo de mi aplicacion.

Este problema me ha surgido porque estoy intentando crear un xml, para guardar el estado de la aplicacion en un determinado momento y no se donde se guarda al hacer:

openFileOutput("test.xml", MODE_WORLD_READABLE);

Una vez que vea donde se crea ya podre empezar a probar si se guarda bien y de la forma que quiero.

Muchas gracias por adelantado.

rinxe
20/02/13, 13:44:13
Esas carpetas que comentas por defecto son privadas para el sistema y se ubican en la memoria interna del movil. Necesitaras un explorador que te muestre la memoria interna del movil. Entonces ya veras la ruta /data/data/...

Y el archivo que guardas no se si lo estaras metiendo en la interna o en la memoria externa. En la memoria externa por defecto lo puedes tener en /Android/data/... o bien en una ruta personalizada

En cualquiera de los dos casos despues de estar en data, buscas el nombre del paquete de tu aplicacion y ahi te apareceran las carpetas y archivos de tu app.

pablogarcia013
20/02/13, 13:51:27
Ya me estoy bajando una aplicacion para ver la memoria intera del movil, creo que no se me guarda en la externa porque lo he buscado por todo el movil y ni rastro :S

Si se guarda en la interna, tendre problemas despues para leerlo? o simplemente accedera al archivo aunque visiblemente no se pueda ver sin una aplicacion?

Muchas gracias! comentare cuando pruebe la aplicacion.

pablogarcia013
20/02/13, 14:02:05
Ya mire la aplicacion y ni rastros hay una carperta data que al intentar entrar en ella me dice que tengo que tener el movil rooteado y en la external sd no hay ni rastro de mi aplicacion

rinxe
20/02/13, 15:26:39
Si usas el almacenamiento interno para guardar archivos, estos los puedes hacer privados y solo utilizables por la propia aplicacion que los crea. En este caso te apareceran en la ruta /data/data/'NOMBREdelPAQUETE'/... Tambien los podrias hacer publicos y serian utilizables por cualquier aplicacion, tambien usaria la mima ruta.

Lo que puedes hacer ya que no tienes privilegios root en tu movil para ver los archivos de sistema (no se si abra algun explorador que te deje verlos sin ser root). Es guardarlos en el almacenamiento externo y aqui podrias ver el contenido del fichero con cualquier explorador.

En mi blog tengo un articulo bastante completo sobre como usar las opciones de almacenamiento, hechale un ojo si quieres.

pablogarcia013
21/02/13, 09:35:31
Voy a hacer lo que me dijiste de guardarlo almacenamiento externo, para ver si creo bien el xml y puedo leerlo bien y una vez vea que lo he hecho bien lo llevare a la memoria interna para que los que vayan a instalar el apk no puedan ver estos archivos, estoy en lo correcto? sin tener privilegios de root la aplicacion puede instalar cosas en memoria interna?
Estoy mirando tu blog :)

pablogarcia013
21/02/13, 11:26:26
He estado mirando tu blog y hay una cosa que me ha llamado la atención, pero no se si lo he entendido muy bien, en la parte de "Opciones de Almacenamiento" cuando hablas del apartado internal storage, dices que puedes crear un archivo en /res/raw a tiempo de compilación, no se si lo he entendido bien, quiere decir esto que yo desde código puedo crear algo en esa carpeta? si es así como se haría? me interesaría puesto que si se puede, crearía ahi los xml de los que he hablado.

Muchas Gracias por todo

rinxe
21/02/13, 13:50:45
Al primer mensaje, estas en lo correcto. La aplicacion por defecto instala los archivos en la memoria interna independientemente de que seas root o no. Pero a la hora de crear los archivos tendrias que indicar que quieres usar la memoria interna.

Al segundo mensaje, puedes añadir archivos en las carpeta del proyecto: raw o asset. Y despues leerlos desde el codigo Android. En este caso tus archivos estarian dentro del apk y debes tener en cuenta que cualquiera que entienda del tema pudes decomprimir el apk y sacar esos archivos.

Creo que se la idea que llevas y si es tan importante, lo suyo seria codificarlos o encriptarlos de alguna manera. Pero aqui no te puedo ayudar ya que nunca he tocado esos temas.

Para el usuario medio puedes usar la memoria interna o incorporar los archivos en las carpetas raw o assets. De este modo no podran acceder a ellos, pero ya te digo que alguien que entienda un poco tendra acceso de cualquier manera.

pablogarcia013
21/02/13, 14:04:25
Muchas gracias por toda la ayuda, lei por ahi que no es muy correcto crear xml en raw, y he visto que se puede crear una carpeta xml (que a mis efectos y mis requisitios me da igual que carpeta sea de las 2).

en el caso de que quisiera poner los archivos en estas carpetas, deberian estar creados de antes? o pueden ser creados en tiempo de ejecucion, me explico:

El usuario quiere guardar el estado de la aplicacion, pulsa sobre un boton guardar, introduce un nombre ("salvado1") y se crea en raw (o xml) un fichero .xml con el estado de la aplicacion. El usuario hace algo y vuelve a pulsar sobre el boton guardar y realiza lo mismo pero con "salvado2" de esta manera se crea un segundo fichero llamado salvado2.xml con las nuevas modificaciones.
Todo esto que estoy diciendo se puede? si es asi, podridas guiarme simplemente como crear ese fichero .xml en tiempo de ejecucion lo demas ya me buscare la manera de rellenarlo de la forma que quiero.

rinxe
21/02/13, 14:28:01
Creo que vas un poco perdido con el termino "en tiempo de ejecucion" en realidad es en tiempo de compilacion.

Simplemente indica que si pones archivos en esas carpetas (raw, assets), al exportar el proyecto y sacar el archivo apk, esos archivos seguiran estando ahi para su posterior uso a traves de codigo ya programado. No puedes usar esas rutas para almacenar datos una vez que estas corriendo la aplicacion. Son carpetas de proyecto.

Por lo tanto esos archivos tienen que estar ya creados cuando los pongas en esas carpetas. Que yo sepa si quieres crear un archivo con la aplicacion ya corriendo en un movil, deberas usar cualquier opcion de almacenamiento (interno, externo, sharedpreferences). Y aqui puedes ubicar el archivo en la ruta que quieras.

Yo en tu caso usaria el almacenamiento interno para guardar esas configuraciones (creo que seria lo mas normal si quieres que no este visible para el usuario medio), o bien lo haces con shared preferences o bien creando un archivo personalizado.

Hechale un ojo al apartado de shared preferences que su uso es lo mas sencillo del mundo y sino hechale un ojo al apartado internal storage si ya quieres crear un archivo personalizado. En los dos casos los archivos estarian ubicados en la memoria interna del movil y el la carpeta privada del proyecto: http://elbauldeandroid.blogspot.com.es/2013/02/opciones-de-almacenamiento.html

pablogarcia013
26/02/13, 12:28:36
Hola! vuelvo con una duda sobre este tema, por eso pense que seria bueno ponerlo aqui, y es una vez que ya he conseguido crear un xml en /data/data y (aunque no pueda verlo desde el móvil) pueda abrirlo perfectamente, hay alguna manera de saber cuantos archivos hay aqui dentro?
me explico:
El usuario quiere guardar el estado actual de la aplicación, lo guarda y hace este mismo proceso pero con nombres distintos 2 veces mas, hay alguna manera de saber el numero de archivos? algo así como contar los archivos que tiene la carpeta?

Muchas gracias!