Not currently allowed to connect to camera “1”

Tags: , ,



ANDROID Caused by java.lang.SecurityException: validateClientPermissionsLocked:1102: Callers from device user 0 are not currently allowed to connect to camera “1”

Camera permission is granted.

It is runned by a FOREGROUND SERVICE.

Works on most devices, but there are few Android 9, Huawei, Motorola and Xiaomi devices that is not working on.

On this link: https://android.googlesource.com/platform/frameworks/av/+/refs/heads/master/services/camera/libcameraservice/CameraService.cpp

Line 1031 explains: “Only allow clients who are being used by the current foreground device user.”

Does this mean that it cannot be accessed by a foreground service?

Code in Kotlin (crash occurs at manager.openCamera):

 try {
            val pickedCamera = getCamera(manager) ?: return
            if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
                != PackageManager.PERMISSION_GRANTED
            ) {
                return
            }
            manager.openCamera(pickedCamera, cameraStateCallback, null)
            imageReader =
                ImageReader.newInstance(1920, 1088, ImageFormat.JPEG, 1 /* images buffered */)
            imageReader.setOnImageAvailableListener(onImageAvailableListener, null)
        } catch (e: CameraAccessException) {
        }

Answer

After analyzing more the crash, I saw that 100% of the users with this crash, had their proximity sensor activated (provided by Firebase Crashlytics).

I wrote some code to avoid using the camera when the proximity sensor was on and it fully solved the problem.

I do not know what was the logic behind it, but it worked 🙂



Source: stackoverflow