Android Caused by java.lang.SecurityException: validateClientPermissionsLocked:1102: 当前不允许来自设备用户 0 的调用者连接到相机“1”
已授予相机权限。
它由前台服务运行。
适用于大多数设备,但只有少数 Android 9、华为、摩托罗拉和小米设备无法运行。
第 1031 行解释说:“只允许当前前台设备用户正在使用的客户端。”
这是否意味着它不能被前台服务访问?
Kotlin 代码(崩溃发生在 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) {
}
最佳答案
在对崩溃进行更多分析后,我发现 100% 发生此崩溃的用户都激活了他们的接近传感器(由 Firebase Crashlytics 提供)。
我写了一些代码来避免在接近传感器打开时使用相机,它完全解决了这个问题。
我不知道它背后的逻辑是什么,但它起作用了:)
关于java - 当前不允许连接到相机 "1",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59992259/