Me gustaría obtener la ruta completa del archivo, desde un URI. El URI no es una imagen, pero es un archivo de música, pero si lo hago como la solución MediaStore, no funcionará si el usuario de la aplicación selecciona, por ejemplo, Astro como navegador, en lugar del reproductor de música. ¿Cómo puedo solucionar esto?
99
content://
o cualquier otro Uri que no sea de archivo.El método PathUtil solo funcionará debajo de oreo y si es oreo, es probable que se bloquee porque en oreo no obtendremos la identificación, sino la ruta completa en data.getData (), por lo que todo lo que necesita hacer es crear un archivo de uri y obtenga su ruta de getPath () y divídala. A continuación está el código de trabajo: -
El código anterior funcionará en oreo y si está por debajo de oreo entonces PathUtil funcionará. ¡Gracias!
PathUtil.java
fuente
Obtener ruta de URI Use la siguiente clase para todas las versiones de Android. acceder a cualquier tipo de archivo .
fuente
Prueba esto.
fuente
null
Puede usar obtener la ruta del archivo de diferentes versiones de SDk
Utilice RealPathUtils para ello
** Ahora obtenga la ruta del archivo de URI **
fuente
una de las respuestas que existe en la página actual ( esta ), es correcta pero tiene algunos errores. por ejemplo, no funcionará en dispositivos con API 29+. Actualizaré el código anterior y publicaré su nueva versión. Creo que esta publicación debería marcarse como la respuesta final.
Código actualizado: ( Añadido soporte de WhatsApp )
fuente
en el archivo build.gradle agregue esto
Ahora llame
FileUtils.getPath(context, uri);
desde su clase principal.fuente
Sé que esto ya ha sido respondido. Pero hay algunos problemas que encontré en los comentarios. Encontré una gran solución confiable bifurcada desde aquí
para usarlo
File file=FileUtils.getFile(uri);
fuente
Código de fragmento cuando recibe la ruta del archivo.
Bellow es una clase a la que se puede acceder creando un nuevo objeto. también necesitará agregar a una dependencia en gradel
implementation 'org.apache.directory.studio:org.apache.commons.io:2.4'
fuente
Para obtener cualquier tipo de ruta de archivo, use esto (tomado de https://github.com/iPaulPro/aFileChooser )
fuente
Respuesta de @SAParkhid en kotlin.
fuente
Me costó mucho intentar resolver esto en Xamarin. De las sugerencias anteriores se me ocurrió esta solución.
fuente
Android 7.0
Column_Index es-1
cuando se selecciona un archivo usandoActionContentGet
y escriba*/*
para digamos un PDFfuente