|
||
|
|
|
|||||||
| Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Junrar
hola a todos, este es mi primer mensaje en este foro, veo que tiene bastante movimiento y que hay gente que sabe bastante de programación android, a ver si hay suerte y me podeis ayudar.
Estoy utilizando la librería JUNRAR para abrir archivos RAR, y para obtener la lista de entries de mi archivo utilizo una función (bueno, en C se llama función, en android ¿Cómo se llama?), que bajé del GITGUB, es la siguiente: public List<String> getPageList(){ String[] ary = unrar.getEntries(mArcPath,".jpg,.png,.jpeg,.gif"); if(ary == null) return null; List<String> pageList = Arrays.asList(ary); if(pageList.size() > 0){ Collections.sort(pageList); //Sort the page names return pageList; } return null; } El caso es que me da un cierre inesperado de mi aplicación, el error viene de la línea: String[] ary = unrar.getEntries(mArcPath,".jpg,.png,.jpeg,.gif"); donde "mArcPath" contiene la ruta, nombre de archivo, y está correcto, he mostrado por pantalla este parámetro para asegurarme. Entonces, no veo que estoy haciendo mal, a ver si alguien me ayuda a arreglar esto o me sugiere un método alternativo para conseguir los entries de mi archivo rar. Gracias amigos. |
|
|
|
#2
|
||||
|
||||
|
Por más que he buscado no he encontrado ninguna librería que se ajuste a las especificaciones que has puesto, la única "junrar" que he encontrado con un método (se llaman así) getEntries es un método sin parámetros.
Suponiendo que estés usando la librería correctamente, prueba poniendo esto delante de mArcPath: "file://". Algunos dispositivos Android no encuentran la ruta si no se lo indicas así en la URI. |
|
#3
|
||||
|
||||
|
El código que puse más arriba la saque de aquí:
https://github.com/sketchpunk/openco.../ComicRar.java ahí se ve que se le envía 2 parámetros. Y el getEntries está declarado así: public static native String[] getEntries(String arcPath,String extList); Por cierto, de donde puedo sacar documentación sobre la JUNRAR? Última edición por mimadrid2020 Día 09/10/13 a las 12:52:35. |
|
#4
|
||||
|
||||
|
Hola amigos y amigas, sigo peleándome con la librería junrar, y tengo un par de preguntas:
¿Porqué no se puede trabajar con archivos rar de manera nativa?, como se hace con los archivos zip, ¿porqué hay que hay que recurrir a librerías externas?. Otra cosa, necesito un código que dándole el nombre del archivo rar, y el nombre del archivo que queremos descomprimir, nos lo devuelva en un InputStream, ¿conocéis algún método para esto ?. |
|
#5
|
||||
|
||||
|
Porque el formato ZIP es libre, mientras que el formato RAR es propietario.
En cuanto a la pregunta técnica, tendrás que jugar con la librería, como tu mismo has dicho al no pertenecer a la API oficial de Android no hay un código estándar para hacerlo. Según la librería de RAR que uses se hará de una forma. |
|
#6
|
||||
|
||||
|
Al final leo el archivo con getInputStream(fh) donde fh contiene el filehead del archivo a decomprimir, y va bien si el archivo a decomprimir es una imagen pequeña, pero con imágenes grandes devuelve nulo... y no digo con imágenes mostruosas, con solo 300kb hay problemas... ¿Cómo se puede regular el tamaño asignado para un imputstream?
Con los archivos zip no hay problema también utilizo un getInputStream e incluso con la misma imagen (comprimida a zip) la extrae sin problemas. |