android - 部分设备连接相机服务失败
问题描述
我的 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" />
解决方案
推荐阅读
- bash - 如何打印多个文件的第一行?
- xml - 为什么在 Node-Express 应用程序中未定义 JSON 对象
- c# - Blazor 客户端(Web 程序集)AuthenticationState 仅在页面重新加载后更新
- java - Firebase 数据库没有显示图片
- javascript - 访问尚未渲染的 React 组件的 props
- php - 从解码 Json 数组中的键获取值?
- python - Gensim 框架:保存和存储 word2vec 键控向量
- mysql - 带有 GROUP_CONCAT 选项的 MYSQL 查询
- c++ - 用户定义类型的 std::format?
- java - 对整数进行升序和降序排序