我正在尝试将图像文件添加到 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。
该应用程序具有文件读取和写入权限。
我究竟做错了什么?