2010-11-24 19 views
12

Hola Soy desarrollador de reproductor de video con la galería de Android. Recibo URI de gallry. y necesito mostrar el título del video, cuando juego video. así que si el contenido no tiene metadatos del título. Necesito desactivar el nombre del archivo de video. ¿Cómo obtener el nombre del archivo de contenido de video?cómo obtener el nombre de archivo de URI

agradecimiento

+0

¿Quiere mostrar el URI? ¿O dividirlo por/y mostrar la última parte? – Mikhail

+0

Quiero mostrar la última parte. si visualizo URI vALUE es/external/video/media/3. pero 3 es id. no es un nombre de archivo – byungkyu

+0

mirada a este otro mensaje: [http://stackoverflow.com/questions/1105593/get-file-name-from-uri-string-in-c-sharp][1] [ 1]: http://stackoverflow.com/questions/1105593/get-file-name-from-uri-string-in-c-sharp –

Respuesta

21

Aquí está el código para hacer que el nombre de archivo del url

Uri u = Uri.parse("www.google.com/images/image.jpg"); 

File f = new File("" + u); 

f.getName(); 
+0

No funciona en mi caso, solo da el nombre al final de la url, pero mientras recojo los documentos de los archivos dentro de la unidad de Google o en otro lugar, devuelve la cadena después de la última barra inclinada. – cammando

1
int actual_image_column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
String filename = cursor.getString(actual_image_column_index); 

Este es un ejemplo de imagen. puedes probar lo mismo para tus necesidades (video).

Gracias & Mejor suerte :)

-2

Aquí les estoy dando un ejemplo de código que cargar una imagen de la galería

Para extraer filename/Imagename, haga lo siguiente

File f = new File(selectedPath); 
System.out.println("Image name is ::" + f.getName());//get name of file 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
super.onActivityResult(requestCode, resultCode, data); 
switch (requestCode) { 
case 1: 
if (resultCode == YourActivity.RESULT_OK) { 
Uri selectedImageUri = data.getData(); 
String selectedPath = getPath(selectedImageUri); 
File f = new File(selectedPath); 
System.out.println("Image name is ::" + f.getName());//get name of file 
} 
} 

Esperamos que esto ayude

+2

'getPath()' es una función personalizada, que no aparece en el fragmento de código –

4

Dado que ninguna de las respuestas realmente resuelve las preguntas, puse mi solución aquí, espero que sea útil.

 String fileName; 
    if (uri.getScheme().equals("file")) { 
      fileName = uri.getLastPathSegment(); 
     } else { 
      Cursor cursor = null; 
      try { 
       cursor = getContentResolver().query(uri, new String[]{ 
         MediaStore.Images.ImageColumns.DISPLAY_NAME 
       }, null, null, null); 

       if (cursor != null && cursor.moveToFirst()) { 
        fileName = cursor.getString(cursor.getColumnIndex(MediaStore.Images.ImageColumns.DISPLAY_NAME)); 
        Log.d(TAG, "name is " + fileName); 
       } 
      } finally { 

       if (cursor != null) { 
        cursor.close(); 
       } 
      } 
     } 
+0

Esta es la respuesta correcta gracias ... @ alijandro –

1
try 
     { 
      String uriString = "http://somesite.com/video.mp4"; 
      URI uri = new URI(uriString); 

      URL videoUrl = uri.toURL(); 
      File tempFile = new File(videoUrl.getFile()); 
      String fileName = tempFile.getName(); 
     } 
     catch (Exception e) 
     { 

     } 
+0

Alguien ha votado negativamente la respuesta. ¿Podrías, por favor, explicar por qué? –

+0

@Grsmto, perdón, pero ¿intentó siquiera ejecutar el código antes de escribir su comentario? Creo que no, porque acabo de revisar tu url de ejemplo y me devolvió el resultado correcto - file.mp3 –

+0

Puedo estar equivocado, me di cuenta de que mi depurador Android Studio está actuando de manera muy extraña ... obtuve un viejo caché de versiones anteriores y todo ... Eliminaré mi respuesta. – Grsmto

0

A continuación código funciona para mí en caso de imagen de la galería, debería funcionar para cualquier tipo de archivo.

String fileName = "default_file_name"; 
    Cursor returnCursor = 
      getContentResolver().query(YourFileUri, null, null, null, null); 
    try { 
     int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME); 
     returnCursor.moveToFirst(); 
     fileName = returnCursor.getString(nameIndex); 
     LOG.debug(TAG, "file name : " + fileName); 
    }catch (Exception e){ 
     LOG.error(TAG, "error: ", e); 
     //handle the failure cases here 
    } finally { 
     returnCursor.close(); 
    } 

Here puede encontrar la explicación detallada y mucho más.

Cuestiones relacionadas