MANIFEST PERMISSIONS WON'T WORK on Android 6.0
Failed to open camera java.lang.RuntimeException: Fail to connect to camera service at android.hardware.Camera.open(Camera.java:499) 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:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:168) at android.os.HandlerThread.run(HandlerThread.java:61)
解決方法只要加入以下程式碼即可
@Override protected void onStart() { super.onStart(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { int hasCameraPermission = checkSelfPermission(Manifest.permission.CAMERA); List<String> permissions = new ArrayList<String>(); if (hasCameraPermission != PackageManager.PERMISSION_GRANTED) { permissions.add(Manifest.permission.CAMERA); } if (!permissions.isEmpty()) { requestPermissions(permissions.toArray(new String[permissions.size()]), 111); } } }
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case 111: { for (int i = 0; i < permissions.length; i++) { if (grantResults[i] == PackageManager.PERMISSION_GRANTED) { } else if (grantResults[i] == PackageManager.PERMISSION_DENIED) { } } } break; default: { super.onRequestPermissionsResult(requestCode, permissions, grantResults); } } }
Place your comment