简体   繁体   English

ZXing条码扫描器库在Android 6.0设备中给出了相机错误

[英]ZXing barcode scanner library giving camera error in Android 6.0 devices

I have integrated ZXing barcode scanner library in my app.And I am handling the request permission dialogs for Android 6.0 devices.But my issue is when I am selecting 'Deny' in the request permission dialog am getting an error like below image.If I click on 'Allow' app is working fine.Can anyone help me.I am scratching my head for a long time to solve this issue.Thanks in advance.[ 我已经在我的应用程序中集成了ZXing条码扫描器库,并且正在处理Android 6.0设备的请求权限对话框,但是我的问题是,当我在请求权限对话框中选择``拒绝''时出现如下图所示的错误。请点击“允许”应用程序。它可以正常工作。任何人都可以帮助我。我为解决这个问题已经花了很长时间了。谢谢您。[ 在此处输入图片说明 ] [1]

The below is my code snippet in which I am handling the permission request for Marshmallow. 以下是我在其中处理棉花糖许可请求的代码段。

if (version >= android.os.Build.VERSION_CODES.M) {
                if (ContextCompat.checkSelfPermission(context,
                        Manifest.permission.CAMERA)
                        != PackageManager.PERMISSION_GRANTED) {
                    if (ActivityCompat.shouldShowRequestPermissionRationale(SearchActivity.this,
                            Manifest.permission.CAMERA)) {

                        ActivityCompat.requestPermissions(SearchActivity.this,
                                new String[]{Manifest.permission.CAMERA},
                                MY_PERMISSIONS_REQUEST_CAMERA);

                    } else {

                        // No explanation needed, we can request the permission.

                        ActivityCompat.requestPermissions(SearchActivity.this,
                                new String[]{Manifest.permission.CAMERA},
                                MY_PERMISSIONS_REQUEST_CAMERA);


                    }
                }
            }

@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_CAMERA: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                int version3 = Build.VERSION.SDK_INT;
                // permission was granted, yay! Do the
                // contacts-related task you need to do.
                Toast.makeText(SearchActivity.this, "Permission granted", Toast.LENGTH_SHORT).show();
            } else {

                 Toast.makeText(SearchActivity.this, "Camera is required",    Toast.LENGTH_SHORT).show();
            }
            return;
        }
    }
}

And the below is my error log. 下面是我的错误日志。

08-23 10:49:07.894   9832-10612/com.test.xxx E/CameraInstance﹕ Failed to open camera
java.lang.RuntimeException: Fail to connect to camera service
        at android.hardware.Camera.<init>(Camera.java:511)
        at android.hardware.Camera.open(Camera.java:353)
        at com.google.zxing.client.android.camera.open.OpenCameraInterface.open(OpenCameraInterface.java:83)
        at com.journeyapps.barcodescanner.camera.CameraManager.open(CameraManager.java:121)
        at com.journeyapps.barcodescanner.camera.CameraInstance$3.run(CameraInstance.java:158)
        at android.os.Handler.handleCallback(Handler.java:746)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.os.HandlerThread.run(HandlerThread.java:61)

08-23 10:49:09.268   9832-10668/com.test.ecommercetrial E/CameraInstance﹕ Failed to configure camera
java.lang.NullPointerException: Attempt to invoke virtual method 'android.hardware.Camera$Parameters android.hardware.Camera.getParameters()' on a null object reference
        at com.journeyapps.barcodescanner.camera.CameraManager.setParameters(CameraManager.java:353)
        at com.journeyapps.barcodescanner.camera.CameraManager.configure(CameraManager.java:139)
        at com.journeyapps.barcodescanner.camera.CameraInstance$4.run(CameraInstance.java:171)
        at android.os.Handler.handleCallback(Handler.java:746)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.os.HandlerThread.run(HandlerThread.java:61)

upgrade your gradle with latest marshmallow version number. 用最新的棉花糖版本号升级您的gradle。 hope it will solve the issue. 希望它将解决问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM