[Android]Media Storeへの画像の保存

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

コメントを投稿