import android.content.ContentValues; import android.content.Context; import android.graphics.Bitmap; import android.net.Uri; import android.os.Build; import android.os.Environment; import android.provider.MediaStore; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; public class MediaSaver { public static void saveMediaToStorage(Context context, Bitmap bitmap) { // Generating a file name String filename = System.currentTimeMillis() + ".jpg"; // Output stream OutputStream fos = null; // For devices running android >= Q if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { // Getting the contentResolver ContentResolver resolver = context.getContentResolver(); // Content resolver will process the contentvalues ContentValues contentValues = new ContentValues(); // Putting file information in content values contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, filename); contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "image/jpg"); contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_PICTURES); // Inserting the contentValues to contentResolver and getting the Uri Uri imageUri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues); // Opening an outputstream with the Uri that we got try { fos = resolver.openOutputStream(imageUri); } catch (Exception e) { e.printStackTrace(); } } else { // These for devices running on android < Q // So I don't think an explanation is needed here File imagesDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); File image = new File(imagesDir, filename); try { fos = new FileOutputStream(image); } catch (Exception e) { e.printStackTrace(); } } if (fos != null) { // Finally writing the bitmap to the output stream that we opened bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); try { fos.close(); context.toast("Saved to Photos"); } catch (Exception e) { e.printStackTrace(); } } } private static void toast(Context context, String message) { // Implement your toast method here } }