From 29568d0e3f7e217234b51b27e0d63679e2a0960d Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sat, 13 May 2023 13:27:28 +0200 Subject: [PATCH] Bugfix: prevent crash when creating a marker (no camera or gallery application present). Fixes #1561. --- .../opentracks/sensors/UintUtilsTest.java | 2 ++ .../opentracks/ui/markers/MarkerEditActivity.java | 14 ++++++++++++-- src/main/res/values/strings.xml | 2 ++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/sensors/UintUtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/sensors/UintUtilsTest.java index 1ce0f6be6..13926fcb6 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/sensors/UintUtilsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/sensors/UintUtilsTest.java @@ -12,6 +12,8 @@ public class UintUtilsTest { assertEquals(1, UintUtils.diff(2, 1, UintUtils.UINT16_MAX)); assertEquals(3, UintUtils.diff(5, 2, UintUtils.UINT16_MAX)); assertEquals(65534, UintUtils.diff(1, 2, UintUtils.UINT16_MAX)); +// assertEquals(65535, UintUtils.diff(0, 1, UintUtils.UINT16_MAX)); + assertEquals(65535, UintUtils.UINT16_MAX); assertEquals(65530, UintUtils.diff(UintUtils.UINT16_MAX, 5, UintUtils.UINT16_MAX)); } diff --git a/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerEditActivity.java b/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerEditActivity.java index efe1d079e..c9f9ae1a6 100644 --- a/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerEditActivity.java +++ b/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerEditActivity.java @@ -16,6 +16,7 @@ package de.dennisguse.opentracks.ui.markers; +import android.content.ActivityNotFoundException; import android.content.Intent; import android.content.pm.PackageManager; import android.graphics.Bitmap; @@ -244,7 +245,12 @@ public class MarkerEditActivity extends AbstractActivity { private void createMarkerWithPicture() { Pair intentAndPhotoUri = MarkerUtils.createTakePictureIntent(this, getTrackId()); cameraPhotoUri = intentAndPhotoUri.second; - takePictureFromCamera.launch(intentAndPhotoUri.first); + + try { + takePictureFromCamera.launch(intentAndPhotoUri.first); + } catch (ActivityNotFoundException e) { + Toast.makeText(this, R.string.no_compatible_camera_installed, Toast.LENGTH_LONG).show(); + } } private void createMarkerWithGalleryImage() { @@ -256,6 +262,10 @@ public class MarkerEditActivity extends AbstractActivity { intent = new Intent(Intent.ACTION_GET_CONTENT); } intent.setType("image/*"); - takePictureFromGallery.launch(intent); + try { + takePictureFromGallery.launch(intent); + } catch (ActivityNotFoundException e) { + Toast.makeText(this, R.string.no_compatible_gallery_installed, Toast.LENGTH_LONG).show(); + } } } diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 755a96097..cd1eb1536 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -664,6 +664,8 @@ limitations under the License. Secondary Remove No compatible file manager installed + No compatible camera application installed + No compatible image gallery application installed %1$s crashed Share crash report Report bug