当从Android中的MediaStore提取视频内容时,光标返回0

问题描述

我正在尝试从Android 11中的MediaStore.Video检索视频内容。游标正在使用以下代码返回“ 0”。我在清单文件添加了READ_EXTERNAL_STORAGE权限,并在访问以下代码之前在活动中添加了运行时权限检查。您能帮我如何从MediaStore中的所有视频中获取名称,持续时间,尺寸字段。Android11中的视频提供程序。

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

int main() {
    string fileName,cont;
    ifstream inputFile;

    do {
        cout << "Please enter the file name: ";
        cin >> fileName;
        inputFile.open(fileName);

        if (inputFile.is_open()) {
            int num = 0;
            int total = 0;
            while (inputFile >> num) {
                total += num; 
            }
            inputFile.close();
            cout << "Total is: " << total << endl;
        }
        else {
            cout << "Failed to open file." << endl;
        }

        cout << "Do you want to continue processing files? (yes or no): " << endl;
    }
    while ((cin >> cont) && (cont == "yes"));
    return 0;
}

解决方法

这对您有帮助吗?

private final Uri uri = MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI;

public Cursor getandroidPlaylistcursor(Context context) {
    ContentResolver resolver = context.getContentResolver();
    final String id = MediaStore.Audio.Playlists._ID;
    final String name = MediaStore.Audio.Playlists.NAME;
    final String[] columns = { id,name };
    return  resolver.query(uri,columns,null,name + " ASC");
}

但是,如果您使用的是Mefiaplayer:

MediaPlayer mp = MediaPlayer.create(this,Uri.parse(uriOfYourFile));
 int duration = mp.getDuration();
etc(...)