From a14e6ed09a0caf19597274e10c236d40ec324d14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= Date: Fri, 8 Apr 2022 11:49:46 +0200 Subject: [PATCH] Catch SecurityException when opening camera MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A managed device might have camera access restricted, which results in the following crash: Caused by android.os.ServiceSpecificException: validateClientPermissionsLocked:1044: Callers from device user 0 are not currently allowed to connect to camera "1" at android.os.Parcel.createException(Parcel.java:2085) at android.os.Parcel.readException(Parcel.java:2039) at android.os.Parcel.readException(Parcel.java:1987) at android.hardware.ICameraService$Stub$Proxy.connectDevice(ICameraService.java:624) at android.hardware.camera2.CameraManager.openCameraDeviceUserAsync(CameraManager.java:389) at android.hardware.camera2.CameraManager.openCameraForUid(CameraManager.java:588) at android.hardware.camera2.CameraManager.openCamera(CameraManager.java:516) at org.webrtc.Camera2Session.openCamera(Camera2Session.java:359) at org.webrtc.Camera2Session.start(Camera2Session.java:322) at org.webrtc.Camera2Session.(Camera2Session.java:298) at org.webrtc.Camera2Session.create(Camera2Session.java:276) at org.webrtc.Camera2Capturer.createCameraSession(Camera2Capturer.java:35) at org.webrtc.CameraCapturer$5.run(CameraCapturer.java:272) at android.os.Handler.handleCallback(Handler.java:883) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loop(Looper.java:214) at android.os.HandlerThread.run(HandlerThread.java:67) Change-Id: I5e7b8d238e9381d1f8a4fe9858e8eb480d578fa0 Bug: webrtc:13950 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/258363 Commit-Queue: Xavier Lepaul‎ Reviewed-by: Xavier Lepaul‎ Cr-Commit-Position: refs/heads/main@{#36513} --- sdk/android/src/java/org/webrtc/Camera2Session.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/android/src/java/org/webrtc/Camera2Session.java b/sdk/android/src/java/org/webrtc/Camera2Session.java index e0b898f506..dec97a2c25 100644 --- a/sdk/android/src/java/org/webrtc/Camera2Session.java +++ b/sdk/android/src/java/org/webrtc/Camera2Session.java @@ -355,7 +355,7 @@ class Camera2Session implements CameraSession { try { cameraManager.openCamera(cameraId, new CameraStateCallback(), cameraThreadHandler); - } catch (CameraAccessException | IllegalArgumentException e) { + } catch (CameraAccessException | IllegalArgumentException | SecurityException e) { reportError("Failed to open camera: " + e); return; }