Code of my QrScannerActivity:
override fun onRequestPermissionsResult( requestCode: Int, permissions: Array<out String>, grantResults: IntArray) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) viewModel.onRequestPermissionsResult(requestCode, grantResults)}
ViewModel code:
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) }}
Error meesage1:
Fatal Exception: java.lang.RuntimeException: Failure delivering resultResultInfo{who=@android:requestPermissions:, request=328, result=-1,data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (hasextras) }} to activity{com.mandarine.authenticator/com.mandarine.authenticator.features.qr.QrScannerActivity}:java.lang.RuntimeException: Fail to connect to camera service atandroid.app.ActivityThread.deliverResults(ActivityThread.java:5360)at android.app.ActivityThread.handleSendResult(ActivityThread.java:5401)at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2267)at android.os.Handler.dispatchMessage(Handler.java:107)at android.os.Looper.loop(Looper.java:237)at android.app.ActivityThread.main(ActivityThread.java:8154)at java.lang.reflect.Method.invoke(Method.java)at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
Error meesage2:
Fatal Exception: java.lang.RuntimeException: Fail to connect to cameraserviceat android.hardware.Camera.(Camera.java:545)at android.hardware.Camera.open(Camera.java:385)at com.google.android.gms.vision.CameraSource.zzc(CameraSource.java:82)at com.google.android.gms.vision.CameraSource.start(CameraSource.java:22)at com.mandarine.authenticator.features.qr.QrScannerActivity.startCameraSource(QrScannerActivity.java:174)at com.mandarine.authenticator.features.qr.QrScannerActivity.access$startCameraSource(QrScannerActivity.java:54)at com.mandarine.authenticator.features.qr.QrScannerActivity$setupSurface$1.surfaceCreated(QrScannerActivity.java:142)at android.view.SurfaceView.updateWindow(SurfaceView.java:666)at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:199)at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:921)at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2215)at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1230)at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6731)at android.view.Choreographer$CallbackRecord.run(Choreographer.java:777)at android.view.Choreographer.doCallbacks(Choreographer.java:590)at android.view.Choreographer.doFrame(Choreographer.java:560)at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:763)at android.os.Handler.handleCallback(Handler.java:739)at android.os.Handler.dispatchMessage(Handler.java:95)at android.os.Looper.loop(Looper.java:145)at android.app.ActivityThread.main(ActivityThread.java:6117)at java.lang.reflect.Method.invoke(Method.java)at java.lang.reflect.Method.invoke(Method.java:372)at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
And in AndroidManifest.xml i have next permission:
<uses-permission android:name="android.permission.CAMERA" />