首页 > 解决方案 > 如何在 Android 上使用 mediastore 访问其他应用程序创建的文件?

问题描述

我能够读取我在 android 10 中使用 mediastore 创建的文件

但我无法读取其他应用程序创建的文件

'java.io.IOException: setDataSource failed.: status=0x80000000' 尝试从其他应用程序访问 mediaPlayer 时发生错误

如何读取其他应用程序创建的文件?

下面是获取 MUSIC 文件夹中文件列表的代码

public void getFileListInFolderApiQ(String path) {

    mDataSet.clear();

    Uri externalUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    String selection = MediaStore.MediaColumns.RELATIVE_PATH + "=?";
    String[] selectionArgs = new String[]{Environment.DIRECTORY_MUSIC + "/" + "tts" + "/"};
    String[] projection = new String[]{
            MediaStore.Audio.Media._ID,
            MediaStore.Audio.Media.DISPLAY_NAME,
            MediaStore.Audio.Media.MIME_TYPE
    };

    Cursor cursor = getContentResolver().query(externalUri, projection, selection, selectionArgs, null);

    Uri testUri = null;

    if (cursor == null || !cursor.moveToFirst()) {
        return;
    }

    do {
        String contentUrl = externalUri.toString() + "/" + cursor.getString(0);

        long id = cursor.getLong(cursor.getColumnIndex(MediaStore.MediaColumns._ID));
        Uri uri = ContentUris.withAppendedId(externalUri, id);

        String tmpFilename = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME));
        testUri = uri;


        mDataSet.add(new CustomTTSListData(tmpFilename, getPathFromUri(testUri), 1, 1, uri));

    } while (cursor.moveToNext());
}

标签: androidmediastore

解决方案


推荐阅读