![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Leer imagen de la carpeta Pictures de Android
Hola a todos. Un saludo porque hace mucho que no nos comunicamos.
Requiero vuestra colaboración una vez más. Me explico. Mi intención es incorporar un icono que he copiado previamente desde Windows por USB en la carpeta Pictures, a mi app. Tengo entendido algunas cosas (que alguien me corrija si me equivoco, por favor) 1.- Desde Android 11 sólo se pueden leer los archivos que ha creado tu app. 2.- Se han creado nuevos permisos a partir de Android 13 3.- Habilitando el permiso MANAGE_EXTERNAL_STORAGE te prmite leer todos los archivos. (Esto lo he leído en las instrucciones de Google para desarrolladores) La cuestión es que (como Google sigue poniendo cada vez mas trabas en Play Store), tengo que qctualizar las app's que tengo publicadas. Concretamente tengo una app que permitía al usuario personalizar el icono de la misma. El procedimiento era sencillo: el usuario copiaba su icono desde Windows en la carpeta Pictures de su dispositivo, y el programa lo leía y lo incorporaba a la app. Esto ha funcionado perfectamente, (no se hasta qué versión, creo que es la 10). Tengo un dispositivo con la versión 9 y funciona perfecto. Tengo otro disposistivo con la versión 13 y ya no funciona. ¡PERDÓN POR EXTENDERME! He modificado el código para adaptarlo a la versión 13 y posteriores (si no cambia Google). Éste es el código que utilizo:
He comentado el try para ver el error que lanza Android y he obtenido que aunque reconoce que el archivo del icono está ahí, pero responde que "Permission denied" para leerlo. No sé si esto tiene alguna solución. Os comento que llevo ya una semana buscando y leyendo cosas, pero no he encontrado nada que lo resuelva. Lo más cercano es el permiso de MANAGE_EXTERNAL_STORAGE que, si lo subo a Play Store, creo que lo tiene que autorizar Google. Pero supongo que en la opción Release/Deployment no tendría que autorizarlo. LOS 4 PERMISOS HAN SIDO GRANTED, AUNQUE NO HA PEDIDO LOS PERMISOS. Perdón por haberme extendido, pero como dice Germán (Neftalí) " Más tiempo dedicado a la pregunta=Mejores respuestas. " Gracias de antemano por leerme y por intentar ayudarme. Un saludo muy afectuoso.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10) "...si no tengo caridad, nada soy..." (1 Cor 13,1-13) |
#2
|
||||
|
||||
¿Tienes que usar "Pictures"? ¿no puedes usar "Downloads"?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
|||
|
|||
Me daria igual.
Ya he probado con Download y con DCIM. (No he probado con Documents ni con otras). Con el mismo resultado. Parece ser que si tu app no ha generado el archivo no te deja leerlo. Esto a partir de la versión 11 de android. Graccias por tu interés Casimiro.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10) "...si no tengo caridad, nada soy..." (1 Cor 13,1-13) Última edición por jhonalone fecha: 17-09-2023 a las 20:43:55. |
#4
|
||||
|
||||
Supongo que puedes usar "ContentChooser".
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
|||
|
|||
Admito mi ignorancia, Casimiro.
No sé qué es ni cómo se usa ContentChooser. Sospecho que el problema está en la procedencia del fichero. Es decir que Android 11 y posteriores reconocen la app que ha guardado el fichero y no permiten leerlo con otra app. Aunque no estoy muy seguro de que sea así. Haré una prueba para confirmar esto y os comento. Pero esto no reolvería mi problema: el usuario tiene que poner el logo en una carpeta para que la app pueda leerlo. Saludos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10) "...si no tengo caridad, nada soy..." (1 Cor 13,1-13) |
#6
|
||||
|
||||
En teoría no se podrá acceder a ninguna carpeta que no sea la propia de la aplicación (google cada día es más restrictivo y está llegando al límite de lo absurdo).
Porque según ese nuevo control entonces no se podría descargar nada con el navegador web, ni se podría abrir un pdf, imagen ni nada que hayamos descargado. Ya digo, es algo absurdo. Prueba a buscar un ejemplo que use ContentChooser, puede que te sirva. No tengo ejemplos para Delphi.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
|||
|
|||
Android 11 y Android 13 han tenido cambios significantes en cuanto a privacidad y seguridad. Dichos cambios han tenido alcance a nivel del Almacenamiento interno.
No puedes acceder a carpetas específicas del almacenamiento en Android 11 y superior ya que no basta solamente con pedir los tipicos permisos en tiempo de ejecución del almacenamiento interno. Aparte de ello, también debes pedir un permiso para administrar el almacenamiento interno. Justamente hoy leí tu problema y actualicé el siguiente repositorio en GitHub para atender problemas relacionados ya que embarcadero no ha implementado esta parte ni en la version de Delphi más actual que es 11.3. Te dejo el link: https://github.com/dani36652/Delphi-...-y-Posteriores Recuerda: la rama "main" es el parche para Delphi 11.0 y la rama "Delphi-11.3" es el parche para dicha versión. Espero te sea de ayuda. |
#8
|
|||
|
|||
Hola, Dani. Muchas gracias por el aporte y el esfuerzo que te habrá llevado.
Además, gracias por la generosidad de compartirlo. He descargado el arcchivo .zip. De momento sólo viene la rama "Main" que corresponde a Delphi 11.0. Es la versión que estoy usando y espero que me sirva. Ya te contaré cuando la pruebe. Un saludo.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10) "...si no tengo caridad, nada soy..." (1 Cor 13,1-13) |
#9
|
|||
|
|||
Dani, ¡ CASI... CASI... LO TENGO !
¡¡¡ HAS HECHO UN TRABAJO FABULOSO !!! Sería perfecto para mí con las 2 acciones siguientes: 1.- Si fuera posible activar el permiso sin mostrar la pantalla para que lo active el usuario. 2.- ¿Como desactivar el permiso despues de usarlo? Claro sin la intervención del usuario. ¿Podrias ayudarme con éso? Aunque sea solamente dándome un par de ideas. Gracias de antemano. un saludo.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10) "...si no tengo caridad, nada soy..." (1 Cor 13,1-13) |
#10
|
||||
|
||||
Cita:
Para quitar el permiso es más fácil porque el propio Android lo hará si la aplicación no hace uso de ese permiso.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#11
|
|||
|
|||
Cita:
|
#12
|
|||
|
|||
Entendido.
Gracias Dani. En cualquier caso me resolviste el problema. Saludos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10) "...si no tengo caridad, nada soy..." (1 Cor 13,1-13) |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Leer archivos de una carpeta | Jad | Varios | 3 | 11-12-2022 16:10:54 |
Acceder a una carpeta de un servidor desde Android | jooooseph | Desarrollo en Delphi para Android | 2 | 14-10-2022 23:28:52 |
Acceso a carpeta Download en Android 12. | voci | Desarrollo en Delphi para Android | 7 | 26-04-2022 18:18:01 |
Error al leer imagen de galeria Android Lollipop | edorantes | Desarrollo en Delphi para Android | 1 | 18-04-2015 18:26:03 |
leer archivos de una carpeta | pgrdelphi | Varios | 2 | 06-09-2011 00:18:16 |
![]() |
|