3

画像ファイルを MediaStore に追加し、ContentResolver の挿入メソッドの 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){}

picturesMediaUri 変数は、Android 9 を実行しているデバイスで常に null を返すため、OutputStream を開くことができません。

アプリには、ファイルの読み取りと書き込みのアクセス許可があります。

私は何を間違っていますか?

4

0 に答える 0