画像ファイルを 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 を開くことができません。
アプリには、ファイルの読み取りと書き込みのアクセス許可があります。
私は何を間違っていますか?