问题描述:Android MediaStore-Downloads 无法访问音频文件。
解决方法:以下是一个可能的解决方法,可以尝试使用 ContentResolver 查询 Downloads 文件夹中的音频文件。
首先,确保你已经在 AndroidManifest.xml 文件中添加了文件读取的权限:
然后,可以使用以下代码来查询 Downloads 文件夹中的音频文件:
String[] projection = {
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.SIZE
};
String selection = MediaStore.Audio.Media.DATA + " like ?";
String[] selectionArgs = new String[]{"%Downloads%"};
Cursor cursor = getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
projection,
selection,
selectionArgs,
null
);
if (cursor != null) {
while (cursor.moveToNext()) {
// 处理查询结果
String audioFilePath = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
String audioFileName = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
long audioFileSize = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE));
// 打印音频文件信息
Log.d("Audio File", "Path: " + audioFilePath);
Log.d("Audio File", "Name: " + audioFileName);
Log.d("Audio File", "Size: " + audioFileSize);
}
cursor.close();
}
这段代码使用了 ContentResolver.query() 方法来查询指定条件的音频文件。查询条件使用了 MediaStore.Audio.Media.DATA 字段,并使用了通配符 %Downloads% 来表示查询 Downloads 文件夹中的音频文件。
在处理查询结果时,你可以根据需要进行相应的操作,例如获取文件路径、文件名和文件大小等信息。
注意:在使用 MediaStore 查询外部存储文件时,需要注意适配 Android 10 及以上版本的存储权限变更。详细信息请参考官方文档:https://developer.android.com/training/data-storage/shared/media