From 50897fe6c9f18381f0885cf1d5342372c50eae5f Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 27 Oct 2018 13:31:56 +0200 Subject: [PATCH] fix #164, removing some glitches related to picking new contact photos --- .../contacts/activities/EditContactActivity.kt | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt index 385f155a..33497410 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/EditContactActivity.kt @@ -114,7 +114,7 @@ class EditContactActivity : ContactActivity() { super.onActivityResult(requestCode, resultCode, resultData) if (resultCode == RESULT_OK) { when (requestCode) { - INTENT_TAKE_PHOTO, INTENT_CHOOSE_PHOTO -> startCropPhotoIntent(lastPhotoIntentUri) + INTENT_TAKE_PHOTO, INTENT_CHOOSE_PHOTO -> startCropPhotoIntent(lastPhotoIntentUri, resultData?.data) INTENT_CROP_PHOTO -> updateContactPhoto(lastPhotoIntentUri.toString(), contact_photo) } } @@ -260,15 +260,21 @@ class EditContactActivity : ContactActivity() { } } - private fun startCropPhotoIntent(uri: Uri?) { - if (uri == null) { + private fun startCropPhotoIntent(primaryUri: Uri?, backupUri: Uri?) { + if (primaryUri == null) { toast(R.string.unknown_error_occurred) return } + var imageUri = primaryUri + val bitmap = MediaStore.Images.Media.getBitmap(contentResolver, primaryUri) + if (bitmap == null) { + imageUri = backupUri + } + lastPhotoIntentUri = getCachePhotoUri() Intent("com.android.camera.action.CROP").apply { - setDataAndType(uri, "image/*") + setDataAndType(imageUri, "image/*") putExtra(MediaStore.EXTRA_OUTPUT, lastPhotoIntentUri) putExtra("outputX", 720) putExtra("outputY", 720) @@ -277,7 +283,7 @@ class EditContactActivity : ContactActivity() { putExtra("crop", "true") putExtra("scale", "true") putExtra("scaleUpIfNeeded", "true") - clipData = ClipData("Attachment", arrayOf("text/uri-list"), ClipData.Item(lastPhotoIntentUri)) + clipData = ClipData("Attachment", arrayOf("text/primaryUri-list"), ClipData.Item(lastPhotoIntentUri)) addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION) if (resolveActivity(packageManager) != null) { startActivityForResult(this, INTENT_CROP_PHOTO)