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 件のコメント :
コメントを投稿