From 6c04557a82659a8fadba5b2683a7425f6cb51c3d Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 22 Oct 2017 12:22:32 +0200 Subject: [PATCH] fix #47, handle Image Capture intent --- app/src/main/AndroidManifest.xml | 5 ++ .../draw/activities/MainActivity.kt | 51 ++++++++++++++----- app/src/main/res/menu/menu.xml | 5 ++ 3 files changed, 48 insertions(+), 13 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e590c5d..b0ac41c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -46,6 +46,11 @@ + + + + + confirmImage() R.id.menu_save -> trySaveImage() R.id.menu_share -> shareImage() R.id.clear -> clearCanvas() @@ -105,17 +116,14 @@ class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener { } private fun tryOpenFile() { - handlePermission(PERMISSION_WRITE_STORAGE) { - if (it) { - openFile() - } else { - toast(R.string.no_storage_permissions) - } + getStoragePermission { + openFile() } } private fun openFile() { - FilePickerDialog(this, curPath) { + val path = if (isImageCaptureIntent) "" else curPath + FilePickerDialog(this, path) { openPath(it) } } @@ -141,6 +149,16 @@ class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener { openPath(path) } } + + if (intent?.action == MediaStore.ACTION_IMAGE_CAPTURE) { + val output = intent.extras?.get(MediaStore.EXTRA_OUTPUT) + if (output != null && output is Uri) { + isImageCaptureIntent = true + Log.e("DEBUG", "output $output, path ${output.path}") + curPath = output.path + invalidateOptionsMenu() + } + } } private fun getStoragePermission(callback: () -> Unit) { @@ -217,13 +235,20 @@ class MainActivity : SimpleActivity(), MyCanvas.PathsChangedListener { } } - private fun trySaveImage() { - handlePermission(PERMISSION_WRITE_STORAGE) { - if (it) { - saveImage() - } else { - toast(R.string.no_storage_permissions) + private fun confirmImage() { + val file = File(curPath) + getFileOutputStream(file) { + it.use { + my_canvas.getBitmap().compress(file.getCompressionFormat(), 70, it) } + setResult(Activity.RESULT_OK) + finish() + } + } + + private fun trySaveImage() { + getStoragePermission { + saveImage() } } diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml index 48e2a86..8ff45ee 100644 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -1,6 +1,11 @@ +