[英]Cursor returns 0 when fetched Video content from MediaStore in Android
[英]Cursor returns null when fetching data from Mediastore query in android
我想使用MediaStore Query從特定的文件夾中獲取文件數據,但返回的游標結果始終為null。
我嘗試使用MediaStore查詢
File file = new File(Environment.getExternalStorageDirectory() + "/myplayer/");
if (file.isDirectory())
{
Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
String[] projection = { MediaStore.Video.Media._ID
MediaStore.Video.Media.DURATION,
MediaStore.Video.Media.DATA,
MediaStore.Video.Media.DISPLAY_NAME,
MediaStore.Video.Media.SIZE, MediaStore.Video.Media.ALBUM
};
String selection = MediaStore.Video.Media.DATA + " like?";
String[] selectionArgs = new String[]{Environment.getExternalStorageDirectory() + "/myplayer/"};
Cursor cursor = ctx.getContentResolver().query(uri, projection, selection, selectionArgs, null);
if ((cursor != null))
{
Log.d("trace cursor", "not null");
Log.d("trace count", "" + cursor.getCount());
}
}
根據以下代碼,光標的數量始終為0,但myplayer目錄中有一些視頻文件。
問題出在選擇參數上。 在末尾附加' % '字符,因此它是“ myplayer /%” :
new String[]{Environment.getExternalStorageDirectory() + "/myplayer/%"};
這意味着選擇以前綴路徑開頭且在“ myplayer /”之后具有任何字符串的任何內容,在本例中為文件名。
也就是說,請考慮在Android Q(API 29)中不推薦使用DATA字段和Environment.getExternalStorageDirectory( )。 因此,它們在這種版本中將無法正常工作,如果您希望代碼在將來的Android版本中工作,則應該已經嘗試找到替代方法,例如改為使用BUCKET_DISPLAY_NAME 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.