@@ -31,12 +31,14 @@ import kotlinx.android.synthetic.main.activity_main.*
3131import java.io.ByteArrayOutputStream
3232import java.io.File
3333import java.io.FileOutputStream
34+ import java.io.OutputStream
3435
3536class MainActivity : SimpleActivity (), CanvasListener {
3637 private val FOLDER_NAME = " images"
3738 private val FILE_NAME = " simple-draw.png"
3839
3940 private var curPath = " "
41+ private var intentUri: Uri ? = null
4042 private var color = 0
4143 private var strokeWidth = 0f
4244 private var suggestedFileExtension = PNG
@@ -170,6 +172,7 @@ class MainActivity : SimpleActivity(), CanvasListener {
170172 val output = intent.extras?.get(MediaStore .EXTRA_OUTPUT )
171173 if (output != null && output is Uri ) {
172174 isImageCaptureIntent = true
175+ intentUri = output
173176 curPath = output.path
174177 invalidateOptionsMenu()
175178 }
@@ -252,15 +255,29 @@ class MainActivity : SimpleActivity(), CanvasListener {
252255
253256 private fun confirmImage () {
254257 val file = File (curPath)
255- getFileOutputStream(file) {
256- it.use {
257- my_canvas.getBitmap().compress(file.getCompressionFormat(), 70 , it)
258+ if (intentUri?.scheme == " content" ) {
259+ val outputStream = contentResolver.openOutputStream(intentUri)
260+ saveToOutputStream(outputStream, file.getCompressionFormat())
261+ } else {
262+ getFileOutputStream(file) {
263+ saveToOutputStream(it, file.getCompressionFormat())
258264 }
259- setResult(Activity .RESULT_OK )
260- finish()
261265 }
262266 }
263267
268+ private fun saveToOutputStream (outputStream : OutputStream ? , format : Bitmap .CompressFormat ) {
269+ if (outputStream == null ) {
270+ toast(R .string.unknown_error_occurred)
271+ return
272+ }
273+
274+ outputStream.use {
275+ my_canvas.getBitmap().compress(format, 70 , it)
276+ }
277+ setResult(Activity .RESULT_OK )
278+ finish()
279+ }
280+
264281 private fun trySaveImage () {
265282 getStoragePermission {
266283 saveImage()
0 commit comments