3

我正在尝试将图像文件添加到 MediaStore,然后使用 ContentResolver 的 insert 方法中的 Uri 打开 OutputStream,如下所示:

    ContentResolver resolver = getApplicationContext()
            .getContentResolver();

    ContentValues cv = new ContentValues();
    cv.put(MediaStore.Images.Media.DISPLAY_NAME, "my_file_name");
    cv.put(MediaStore.Images.Media.MIME_TYPE, "image/png");
    String relativePath = Environment.DIRECTORY_PICTURES;
    cv.put(MediaStore.Images.Media.RELATIVE_PATH, relativePath);

    Uri pictureCollectionUri;

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        pictureCollectionUri = MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY);
    }
    else{
        pictureCollectionUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
    }
    OutputStream outputStream = null;

    Uri picturesMediaUri = resolver.insert(pictureCollectionUri, cv);

    try {
        outputStream = resolver.openOutputStream(picturesMediaUri);
    }
    catch(FileNotFoundException e){}

在运行 Android 9 的设备上,picturesMediaUri 变量始终返回 null,因此我无法打开 OutputStream。

该应用程序具有文件读取和写入权限。

我究竟做错了什么?

4

0 回答 0