Cómo obtener datos de MediaStore.File y MediaStore.File.FileColumn

Estoy tratando de obtener todo el nombre de archivo con archivos de audio en él He utilizado Mediastore para obtener el mediastore de audio, álbum, lista de reproducción y audio DATA también, pero ¿cómo puedo obtener el archivo o títulos de la carpeta que contiene el archivo de audio. Código que he intentado pero no es correcto ya que no puedo establecer el External_Content_uri. Este es el código que he probado.

private void External() { try { String[] proj = {MediaStore.Files.FileColumns.TITLE, MediaStore.Files.FileColumns._ID, MediaStore.Files.FileColumns.PARENT, MediaStore.Files.FileColumns.DATA };// Can include more data for more details and check it. String selection =MediaStore.Files.FileColumns.MEDIA_TYPE+"=?"; String[] selectionArgs = {"MediaStore.Files.FileColumns.MEDIA_TYPE_AUDIO"}; String sortOrder = MediaStore.Audio.Media.TITLE + " ASC"; Cursor audioCursor = getContentResolver().query(MediaStore.Files.getContentUri("\"external\""), proj, selection, selectionArgs, sortOrder); if (audioCursor != null) { if (audioCursor.moveToFirst()) { do { int filetitle = audioCursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.TITLE); int file_id = audioCursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns._ID); int fileparent = audioCursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.PARENT); int filedata = audioCursor.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATA); Mediafileinfo info = new Mediafileinfo(); info.setData(new File(new File(audioCursor.getString(filedata)).getParent()).getName()); info.setTitle(audioCursor.getString(filetitle)); info.set_id(audioCursor.getString(file_id)); info.setParent(audioCursor.getString(fileparent)); // info.setData(audioCursor.getString(filedata)); audioList.add(info); } while (audioCursor.moveToNext()); } } assert audioCursor != null; audioCursor.close(); } catch (Exception e) { e.printStackTrace(); } } 

He intentado este y este ejemplo, pero no soy capaz de obtener la solución.

Escribir una nueva respuesta, ya que lo único que quieres es los nombres de las carpetas de los archivos de audio.

Así que lo mejor de usar aquí es MediaStore.Audio.Media lugar de usar MediaStore.File . Obtenga los nombres de las carpetas usando el siguiente en la ruta del archivo de audio.

 new File(new File(audioCursor.getString(filedata)).getParent()).getName() 

 private void External() { try { Uri externalUri= MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; projection=new String[]{MediaStore.Audio.Media._ID, MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DATA,; String selection =null; String[] selectionArgs = null; String sortOrder = MediaStore.Audio.Media.TITLE + " ASC"; Cursor audioCursor = getContentResolver().query(externalUri, proj, selection, selectionArgs, sortOrder); if (audioCursor != null) { if (audioCursor.moveToFirst()) { do { int filetitle = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE); int file_id = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID); int filePath = audioCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA); Mediafileinfo info = new Mediafileinfo(); info.setData(new File(new File(audioCursor.getString(filedata)).getParent()).getName()); info.setTitle(audioCursor.getString(filetitle)); info.set_id(audioCursor.getString(file_id)); audioList.add(info); } while (audioCursor.moveToNext()); } } assert audioCursor != null; audioCursor.close(); } catch (Exception e) { e.printStackTrace(); } } 

Hola archivo de medios de consulta como audio, imágenes y video usando Android Media Store y Android Content Resolver, compruebe este tutorial
http://www.androiddevelopersolutions.com/2015/12/android-media-store-tutorial-list-all.html

Todas las imágenes:

 private void parseAllImages() { try { String[] projection = {MediaStore.Images.Media.DATA}; cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, // Which columns to return null, // Return all rows null, null); int size = cursor.getCount(); /******* If size is 0, there are no images on the SD Card. *****/ if (size == 0) { } else { int thumbID = 0; while (cursor.moveToNext()) { int file_ColumnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); /**************** Captured image details ************/ /***** Used to show image on view in LoadImagesFromSDCard class ******/ String path = cursor.getString(file_ColumnIndex); String fileName = path.substring(path.lastIndexOf("/") + 1, path.length()); MediaFileInfo mediaFileInfo = new MediaFileInfo(); mediaFileInfo.setFilePath(path); mediaFileInfo.setFileName(fileName); mediaFileInfo.setFileType(type); mediaList.add(mediaFileInfo); } } } catch (Exception e) { e.printStackTrace(); } 

}

Para Listar todo el video (.mp4)

 private void parseAllVideo() { try { String name = null; String[] thumbColumns = {MediaStore.Video.Thumbnails.DATA, MediaStore.Video.Thumbnails.VIDEO_ID}; int video_column_index; String[] proj = {MediaStore.Video.Media._ID, MediaStore.Video.Media.DATA, MediaStore.Video.Media.DISPLAY_NAME, MediaStore.Video.Media.SIZE}; Cursor videocursor = getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, proj, null, null, null); int count = videocursor.getCount(); Log.d("No of video", "" + count); for (int i = 0; i < count; i++) { MediaFileInfo mediaFileInfo = new MediaFileInfo(); video_column_index = videocursor .getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME); videocursor.moveToPosition(i); name = videocursor.getString(video_column_index); mediaFileInfo.setFileName(name); int column_index = videocursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); videocursor.moveToPosition(i); String filepath = videocursor.getString(column_index); mediaFileInfo.setFilePath(filepath); mediaFileInfo.setFileType(type); mediaList.add(mediaFileInfo); // id += " Size(KB):" + // videocursor.getString(video_column_index); } videocursor.close(); } catch (Exception e) { e.printStackTrace(); } 

}

Para Listar Todo el Audio

 private void parseAllAudio() { try { String TAG = "Audio"; Cursor cur = getContentResolver().query( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null); if (cur == null) { // Query failed... Log.e(TAG, "Failed to retrieve music: cursor is null :-("); } else if (!cur.moveToFirst()) { // Nothing to query. There is no music on the device. How boring. Log.e(TAG, "Failed to move cursor to first row (no query results)."); }else { Log.i(TAG, "Listing..."); // retrieve the indices of the columns where the ID, title, etc. of the song are // add each song to mItems do { int artistColumn = cur.getColumnIndex(MediaStore.Audio.Media.ARTIST); int titleColumn = cur.getColumnIndex(MediaStore.Audio.Media.TITLE); int albumColumn = cur.getColumnIndex(MediaStore.Audio.Media.ALBUM); int durationColumn = cur.getColumnIndex(MediaStore.Audio.Media.DURATION); int idColumn = cur.getColumnIndex(MediaStore.Audio.Media._ID); int filePathIndex = cur.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); Log.i(TAG, "Title column index: " + String.valueOf(titleColumn)); Log.i(TAG, "ID column index: " + String.valueOf(titleColumn)); Log.i("Final ", "ID: " + cur.getString(idColumn) + " Title: " + cur.getString(titleColumn) + "Path: " + cur.getString(filePathIndex)); MediaFileInfo audio = new MediaFileInfo(); audio.setFileName(cur.getString(titleColumn)); audio.setFilePath(cur.getString(filePathIndex)); audio.setFileType(type); mediaList.add(audio); } while (cur.moveToNext()); } } catch (Exception e) { e.printStackTrace(); } 

}

  • MediaStore - Uri para consultar todos los tipos de archivos (medios y no medios)
  • NullPointerException en android AsyncTask en el método innerSetException ():
  • La columna MediaStore.MediaColumns.TITLE de MediaStore de Android es nula para algunos archivos
  • Listar todas las imágenes de la cámara en Android
  • Cómo limitar la duración de MediaStore en Android 7
  • Añadir imágenes a la galería
  • Android MediaStore sqlite db ubicación
  • Problema duplicado de Android thumbnail
  • Android: EXTERNAL_CONTENT_URI es suficiente para una galería de fotos?
  • ¿Qué es MINI_THUMB_MAGIC y cómo usarlo?
  • Obtener nombre de archivo y ruta de URI de mediastore
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.