首页 > 解决方案 > 部分设备连接相机服务失败

问题描述

我的 QrScannerActivity 的代码:

override fun onRequestPermissionsResult(
    requestCode: Int,
    permissions: Array<out String>,
    grantResults: IntArray
) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults)
    viewModel.onRequestPermissionsResult(requestCode, grantResults)
}

视图模型代码:

fun onRequestPermissionsResult(requestCode: Int, grantResults: IntArray) {
    if (requestCode == CAMERA_PERMISSION_REQUEST_CODE
        && grantResults.firstOrNull() == PackageManager.PERMISSION_GRANTED
    ) {
        permissionGrantEvent.postUnitEvent()
    } else {
        errorMessageResId.postValue(R.string.errors_permission_denied)
    }
}

错误信息 1:

致命异常:java.lang.RuntimeException:传递结果失败 ResultInfo{who=@android:requestPermissions:, request=328, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (有附加功能) }} 到活动 {com.mandarine.authenticator/com.mandarine.authenticator.features.qr.QrScannerActivity}:java.lang.RuntimeException:无法在 android.app.ActivityThread.deliverResults 连接到相机服务(ActivityThread.java:5360 ) 在 android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51) 在 android.app.ActivityThread.handleSendResult(ActivityThread.java:5401) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 在 android.app.ActivityThread$H。handleMessage(ActivityThread.java:2267) 在 android.os.Handler.dispatchMessage(Handler.java:107) 在 android.os.Looper.loop(Looper.java:237) 在 android.app.ActivityThread.main(ActivityThread.java :8154) 在 java.lang.reflect.Method.invoke(Method.java) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) 在 com.android.internal.os.ZygoteInit。主要(ZygoteInit.java:1100)

错误信息2:

致命异常:java.lang.RuntimeException:无法连接到 com.google.android 的 android.hardware.Camera.open(Camera.java:385) 的 android.hardware.Camera.(Camera.java:545) 的相机服务.gms.vision.CameraSource.zzc(CameraSource.java:82) 在 com.google.android.gms.vision.CameraSource.start(CameraSource.java:22) 在 com.mandarine.authenticator.features.qr.QrScannerActivity.startCameraSource (QrScannerActivity.java:174) 在 com.mandarine.authenticator.features.qr.QrScannerActivity.access$startCameraSource(QrScannerActivity.java:54) 在 com.mandarine.authenticator.features.qr.QrScannerActivity$setupSurface$1.surfaceCreated(QrScannerActivity. java:142) 在 android.view.SurfaceView.updateWindow(SurfaceView.java:666) 在 android.view.SurfaceView$3.onPreDraw(SurfaceView.java:199) 在 android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:921) 在 android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2215) 在 android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1230) 在 android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6731) 在android.view.Choreographer$CallbackRecord.run(Choreographer.java:777) 在 android.view.Choreographer.doCallbacks(Choreographer.java:590) 在 android.view.Choreographer.doFrame(Choreographer.java:560) 在 android.view .Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper。循环(Looper.java:145)在 android.app.ActivityThread.main(ActivityThread.java:6117)在 java.lang.reflect.Method.invoke(Method.java)在 java.lang.reflect.Method.invoke(方法.java:372) 在 com.android.internal.os。ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

在 AndroidManifest.xml 我有下一个权限:

<uses-permission android:name="android.permission.CAMERA" />

标签: androidcrashandroid-cameraruntimeexception

解决方案


推荐阅读