gpt4 book ai didi

android - 如何从 MediaStore.File 和 MediaStore.File.FileColumn 获取数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:14:41 25 4
gpt4 key购买 nike

我正在尝试获取其中包含音频文件的所有文件名包含音频文件的标题。这是我尝试过的代码,但它不正确,因为我无法设置 External_Content_uri。这是我试过的代码。

  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();
}
}

我试过了 thisthis示例,但我无法获得解决方案。

最佳答案

写一个新的答案,因为你只需要音频文件的文件夹名称。

所以这里最好使用 MediaStore.Audio.Media 而不是 MediaStore.File。使用下面的音频文件路径获取文件夹名称。

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();
}
}

关于android - 如何从 MediaStore.File 和 MediaStore.File.FileColumn 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39354275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com