簡體   English   中英

從Android中的Mediastore查詢中獲取數據時,Cursor返回null

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM