Estoy tratando de obtener una imagen de la galería.
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select picture"), resultCode );
Después de regresar de esta actividad, tengo un dato que contiene Uri. Parece que:
content://media/external/images/1
¿Cómo puedo convertir esta ruta en una real (como ' /sdcard/image.png
')?
Gracias
android
image-gallery
davs
fuente
fuente
uri.getPath()
No te dio el camino real?Respuestas:
¿Es realmente necesario que obtengas un camino físico?
Por ejemplo,
ImageView.setImageURI()
yContentResolver.openInputStream()
permitirle acceder al contenido de un archivo sin conocer su ruta real.fuente
Esto es lo que hago:
y:
NOTA: el
managedQuery()
método está obsoleto, por lo que no lo estoy usando.Última edición: Mejora. ¡¡Deberíamos cerrar el cursor !!
fuente
@Rene Juuse - arriba en los comentarios ... ¡Gracias por este enlace!
. el código para obtener la ruta real es un poco diferente de un SDK a otro, por lo que a continuación tenemos tres métodos que tratan con diferentes SDK.
getRealPathFromURI_API19 (): devuelve la ruta real para API 19 (o superior pero no probada) getRealPathFromURI_API11to18 (): devuelve la ruta real para API 11 a API 18 getRealPathFromURI_below11 (): devuelve ruta real para API por debajo de 11
fuente: http://hmkcode.com/android-display-selected-image-and-its-real-path/
ACTUALIZACIÓN 2016 marzo
Para solucionar todos los problemas con la ruta de las imágenes, intento crear una galería personalizada como Facebook y otras aplicaciones. Esto se debe a que puede usar solo archivos locales (archivos reales, no virtuales o temporales), resuelvo todos los problemas con esta biblioteca.
https://github.com/nohana/Laevatein (esta biblioteca es para tomar fotos de la cámara o elegir de la galería, si eliges de la galería, tiene un cajón con álbumes y solo muestra archivos locales)
fuente
Nota: Esta es una mejora en la respuesta de @ user3516549 y la he verificado en Moto G3 con Android 6.0.1
Tengo este problema, así que he intentado la respuesta de @ user3516549 pero en algunos casos no funcionaba correctamente. Descubrí que en Android 6.0 (o superior) cuando comenzamos la intención de selección de imágenes de la galería, se abrirá una pantalla que muestra imágenes recientes cuando el usuario seleccione una imagen de esta lista, obtendremos uri como
mientras que si el usuario selecciona la galería del cajón deslizante en lugar de reciente, obtendremos uri como
Así que lo he manejado en
getRealPathFromURI_API19()
EDITAR: si está intentando obtener la ruta de la imagen del archivo en una tarjeta sd externa en una versión superior, consulte mi pregunta
fuente
EDITAR: Utilice esta solución aquí: https://stackoverflow.com/a/20559175/2033223 ¡ Funciona perfecto!
En primer lugar, gracias por tu solución @luizfelipetx
Cambié un poco tu solución. Esto funciona para mi:
Nota: Entonces obtuvimos documentos e imágenes, dependiendo de si la imagen proviene de 'recientes', 'galería' o lo que sea. Entonces extraigo la ID de la imagen primero antes de buscarla.
fuente
Hola, aquí está mi código completo para tomar imágenes de la cámara o galeery
// Mi declaración de variable
//Al hacer clic
// cuerpo del método
// Y resto de cosas
fuente
options.inSampleSize = calculateInSampleSize(options, 100, 100);
Esto me ayudó a obtener uri de la Galería y convertirlo en un archivo para carga multiparte
https://github.com/iPaulPro/aFileChooser/blob/master/aFileChooser/src/com/ipaulpro/afilechooser/utils/FileUtils.java
fuente