Android11から共通フォルダへの直接アクセスができなくなりました。画像などを共有フォルダに保存する場合はMediaStore APIを使用します。
画像をMediaStore APIで保存する場合は、以下のように行います。
private void saveImageWithMediaStore(Bitmap bmp, String display_name){
ContentValues values = new ContentValues();
// コンテンツ クエリの列名
// ファイル名
values.put(MediaStore.Images.Media.DISPLAY_NAME, display_name);
// マイムの設定
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
// 書込み時にメディア ファイルに排他的にアクセスする
values.put(MediaStore.Images.Media.IS_PENDING, 1);
ContentResolver resolver = getActivity().getContentResolver();
Uri collection = MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY);
Uri item = resolver.insert(collection, values);
try (OutputStream outstream = resolver.openOutputStream(item)) {
bmp.compress(Bitmap.CompressFormat.JPEG, 70, outstream);
} catch (IOException e) {
e.printStackTrace();
}
values.clear();
// 排他的にアクセスの解除
values.put(MediaStore.Images.Media.IS_PENDING, 0);
resolver.update(item, values, null, null);
}

0 件のコメント :
コメントを投稿