我很难从之前记录的文件中获取特定的视频文件详细信息、持续时间等。我目前所能做的就是获取cursor
所有文件,然后一个一个循环。
Cursor cursor = MediaStore.Video.query(getContext().getContentResolver(), MediaStore.Video.Media.EXTERNAL_CONTENT_URI, new String[]{MediaStore.Video.VideoColumns.DURATION,MediaStore.Video.VideoColumns.DATE_TAKEN,MediaStore.Video.VideoColumns.RESOLUTION,MediaStore.Video.VideoColumns.DISPLAY_NAME});
if(cursor.moveToFirst())
while(!cursor.isLast()){
if(cursor.getString(3)==fight.filename)
{
// do something here
}
cursor.moveToNext();
}
但是我需要访问特定文件的详细信息,所以我尝试创建URI
但没有运气,因为cursor
总是返回null
。我哪里错了?
Uri uri = Uri.parse(Environment.DIRECTORY_DCIM+"/FightAll_BJJ_Scoring/"+(fight.filename));
Cursor cursor = MediaStore.Video.query(getContext().getContentResolver(), uri, new String[]{MediaStore.Video.VideoColumns.DURATION,MediaStore.Video.VideoColumns.DATE_TAKEN,MediaStore.Video.VideoColumns.RESOLUTION,MediaStore.Video.VideoColumns.DISPLAY_NAME});
// cursor is always null here
编辑:感谢下面的zapl回答,我在下面得到了这段代码(注意我修改了光标行),但是现在返回的光标不是空的,但它仍然是空的,当我尝试读取 cursor.getString(2) 时,我什么也没有。
Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
String selection = MediaColumns.DATA + "=?";
String[] selectionArgs = { Environment.DIRECTORY_DCIM+"/FightAll_BJJ_Scoring/"+(fight.filename) };
Cursor cursor = getContext().getContentResolver().query(uri, new String[]{MediaStore.Video.VideoColumns.DURATION,MediaStore.Video.VideoColumns.DATE_TAKEN,MediaStore.Video.VideoColumns.RESOLUTION,MediaStore.Video.VideoColumns.DISPLAY_NAME}, selection, selectionArgs, null);
任何帮助都感激不尽。