ContentResolver – cómo obtener el nombre de archivo de Uri

Llamo startActivityForResult con intención ACTION_GET_CONTENT . Algunas aplicaciones me devuelven datos con este Uri :

Contenido: // media / external / images / media / 18122

No sé si es imagen o video o algún contenido personalizado. ¿Cómo uso ContentResolver para obtener el nombre de archivo real o título de contenido de este Uri?

Puede obtener el nombre de archivo de este código o cualquier otro campo modificando la proyección

 String[] projection = {MediaStore.MediaColumns.DATA}; ContentResolver cr = getApplicationContext().getContentResolver(); Cursor metaCursor = cr.query(uri, projection, null, null, null); if (metaCursor != null) { try { if (metaCursor.moveToFirst()) { path = metaCursor.getString(0); } } finally { metaCursor.close(); } } return path; 

@ La respuesta de Durairaj es específica para obtener la ruta de un archivo. Si lo que estás buscando es el nombre real del archivo (ya que deberías usar Resolución de contenido, en este punto probablemente obtendrás mucho contenido: // URIs) tendrás que hacer lo siguiente:

(Código copiado de la respuesta de Durairaj y modificado)

  String[] projection = {MediaStore.MediaColumns.DISPLAY_NAME}; Cursor metaCursor = cr.query(uri, projection, null, null, null); if (metaCursor != null) { try { if (metaCursor.moveToFirst()) { fileName = metaCursor.getString(0); } } finally { metaCursor.close(); } } 

La pieza principal a tener en cuenta aquí es que estamos utilizando MediaStore.MediaColumns.DISPLAY_NAME , que devuelve el nombre real del contenido. También puede intentar MediaStore.MediaColumns.TITLE , ya que no estoy seguro de cuál es la diferencia.

Puede utilizar la solución propuesta por Durairaj con lo siguiente como matriz de proyección:

 String[] projection = { "_data" }; 
  • ¿Cuál es la diferencia entre contentprovider y contentResolver en android
  • ¿Cómo notificar a la actividad de llamada cuando SyncAdapter ha finalizado?
  • Cómo actualizar el hilo de sms después de insertar un borrador en "content: // sms / draft"
  • Android recibe sms de la bandeja de entrada, forma optimizada para leer todos los mensajes y agruparlos
  • Getcontentresolver () no está definido para el tipo
  • ¿Por qué esta variable se establece en cadena vacía cuando ya se inicializa a una cadena vacía?
  • Android - Obtención de la lista de contactos con direcciones de calle, pero no con valores bajos como Skype, donde la dirección es sólo una ciudad y un estado
  • ¿Cuáles son las ventajas de usar un ContentProvider sobre el almacenamiento SQLIte normal?
  • ¿Cómo obtener contactos en orden de sus próximos cumpleaños?
  • No se pueden eliminar contactos de la tarjeta SIM
  • Cómo actualizar una foto de contacto nativa en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.