diff --git a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/Camera.java b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/Camera.java index 7668ec97eec..e5d5ea0e103 100644 --- a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/Camera.java +++ b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/Camera.java @@ -396,10 +396,14 @@ public void onOpened(@NonNull CameraDevice device) { cameraFeatures.getFocusPoint().checkIsSupported()); } } catch (Exception e) { + String message = + (e.getMessage() == null) + ? (e.getClass().getName() + " occurred while opening camera.") + : e.getMessage(); if (BuildConfig.DEBUG) { - Log.i(TAG, "open | onOpened error: " + e.getMessage()); + Log.i(TAG, "open | onOpened error: " + message); } - dartMessenger.sendCameraErrorEvent(e.getMessage()); + dartMessenger.sendCameraErrorEvent(message); close(); } } @@ -792,7 +796,11 @@ private void lockAutoFocus() { try { captureSession.capture(previewRequestBuilder.build(), null, backgroundHandler); } catch (CameraAccessException e) { - dartMessenger.sendCameraErrorEvent(e.getMessage()); + String message = + (e.getMessage() == null) + ? "CameraAccessException occurred while locking autofocus." + : e.getMessage(); + dartMessenger.sendCameraErrorEvent(message); } } @@ -815,7 +823,11 @@ void unlockAutoFocus() { captureSession.capture(previewRequestBuilder.build(), null, backgroundHandler); } catch (CameraAccessException e) { - dartMessenger.sendCameraErrorEvent(e.getMessage()); + String message = + (e.getMessage() == null) + ? "CameraAccessException occurred while unlocking autofocus." + : e.getMessage(); + dartMessenger.sendCameraErrorEvent(message); return; } diff --git a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/DartMessenger.java b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/DartMessenger.java index 819c57da043..f76fcdec1f9 100644 --- a/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/DartMessenger.java +++ b/packages/camera/camera_android/android/src/main/java/io/flutter/plugins/camera/DartMessenger.java @@ -95,17 +95,14 @@ void sendCameraClosingEvent() { handler.post(() -> eventApi.closed(new NoOpVoidResult())); } - // TODO(schectman): Make `description` non-null, see - // https://github.com/flutter/flutter/issues/156729 /** * Sends a message to the Flutter client informing that an error occurred while interacting with * the camera. * * @param description contains details regarding the error that occurred. */ - void sendCameraErrorEvent(@Nullable String description) { - String errorMessage = (description == null) ? "" : description; - handler.post(() -> eventApi.error(errorMessage, new NoOpVoidResult())); + void sendCameraErrorEvent(@NonNull String description) { + handler.post(() -> eventApi.error(description, new NoOpVoidResult())); } /**