Skip to content

Commit f106b35

Browse files
committed
fix #74, properly handle image_capture intent with output defined
1 parent 68d07fb commit f106b35

1 file changed

Lines changed: 22 additions & 5 deletions

File tree

app/src/main/kotlin/com/simplemobiletools/draw/activities/MainActivity.kt

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,14 @@ import kotlinx.android.synthetic.main.activity_main.*
3131
import java.io.ByteArrayOutputStream
3232
import java.io.File
3333
import java.io.FileOutputStream
34+
import java.io.OutputStream
3435

3536
class 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

Comments
 (0)