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
- Mostrar los contactos en orden de clasificación ContactsContract.Contacts de Content Resolver
- ¿Cómo obtener los contactos de whatsapp de Android?
- Una respuesta final sobre cómo obtener datos Exif de URI
- ¿Para qué se utiliza cursor.setNotificationUri ()?
- ¿Cómo hacer frente a múltiples proveedores de contenido?
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?
- ¿Cómo probar una actividad que utiliza un ContentProvider sin afectar la base de datos de producción?
- Cuando se llama a ContentResolver.notifyChange () para un URI determinado, ContentObservers observa los URI descendientes de este URI notificados?
- Qué es getContentResolver (). Call () y cómo usarlo
- ¿Cómo especifica la aplicación del proveedor de contenido los permisos que necesitan las aplicaciones de los clientes para acceder a los datos del proveedor?
- ¿Qué es MINI_THUMB_MAGIC y cómo usarlo?
- Telephony.Sms.Inbox.PERSON utiliza Contacts.People._ID obsoletos
- No se puede consultar ContentResolver para obtener el nombre del archivo descargado de my_downloads, pero funciona bien en all_downloads
- Android - SQLite ContentResolver insertar / eliminar / actualizar en UI Thread?
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" };
- La imagen no se carga desde la URL en infoWindow personalizado con la biblioteca de carga de imágenes de Picasso en android
- ¿Cómo crear / deshabilitar la intención de filtro de forma programable?