'Permission problems accessing android camera

I'm very newbie in this Android world, and I'm trying to build an app to record video and GPS information.

I'm facing some issues to access the camera. No errors, but it seems permission was not granted.

Manifest: I think there are many redundant lines, but I was trying all possibilities.

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-feature android:name="android.hardware.camera.any" />
    <uses-permission android:name="android.hardware.camera.any" />
    <uses-feature android:name="android.hardware.CAMERA2" />
    <uses-permission android:name="android.permission.CAMERA2" />
    <uses-feature android:name="android.hardware.CAMERAX" />
    <uses-permission android:name="android.permission.CAMERAX" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>

Starting Camera:

  @SuppressLint("RestrictedApi")
    private void cameraXStart(ProcessCameraProvider cameraProvider) {

        cameraProvider.unbindAll();
        CameraSelector cameraSelector = new CameraSelector.Builder()
                .requireLensFacing(CameraSelector.LENS_FACING_BACK)
                .build();
        Preview preview = new Preview.Builder()
                .build();
        preview.setSurfaceProvider(previewView.getSurfaceProvider());

        // Image capture use case
        imageCapture = new ImageCapture.Builder()
                .setCaptureMode(ImageCapture.CAPTURE_MODE_MINIMIZE_LATENCY)
                .build();

        // Video capture use case
        videoCapture = new VideoCapture.Builder()
                .setVideoFrameRate(30)
                .build();

        //bind to lifecycle:
        cameraProvider.bindToLifecycle((LifecycleOwner) this, cameraSelector, preview, imageCapture, videoCapture);

    }

Then, I have this one to allow camera usage:

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

When I run, I get thisL

D/Camera2CameraImpl: {Camera@721ce9d[id=0]} Cancelling scheduled re-open: androidx.camera.camera2.internal.Camera2CameraImpl$StateCallback$ScheduledReopen@5296b52 D/Camera2CameraImpl: {Camera@721ce9d[id=0]} Opening camera. D/Camera2CameraImpl: {Camera@721ce9d[id=0]} Transitioning camera internal state: REOPENING --> OPENING D/CameraStateMachine: New public camera state CameraState{type=OPENING, error=null} from OPENING and null D/UseCaseAttachState: All use case: [androidx.camera.core.ImageCapture-f0c976a1-2b26-4655-88d6-6790eae98eb6206680605, androidx.camera.core.VideoCapture-c788dcee-3839-4ff7-ad80-908046a7a19e41671826, androidx.camera.core.Preview-45eb99ce-6730-444c-a6dc-e4baabab208b69765876] for camera: 0 D/Camera2CameraImpl: {Camera@721ce9d[id=0]} Unable to open camera due to validateClientPermissionsLocked:913: Caller "com.example.trucklogger" (PID 10105, UID 5516) cannot open camera "0" without camera permission D/Camera2CameraImpl: {Camera@721ce9d[id=0]} Transitioning camera internal state: OPENING --> REOPENING D/CameraStateMachine: New public camera state CameraState{type=OPENING, error=null} from OPENING and null D/Camera2CameraImpl: {Camera@721ce9d[id=0]} Attempting camera re-open in 1000ms: androidx.camera.camera2.internal.Camera2CameraImpl$StateCallback$ScheduledReopen@a4eea9e activeResuming = true D/Camera2CameraImpl: {Camera@721ce9d[id=0]} Attempting to force open the camera. D/CameraStateRegistry: tryOpenCamera(Camera@721ce9d[id=0]) [Available Cameras: 0, Already Open: true (Previous state: OPENING)] --> SUCCESS D/CameraStateRegistry: Recalculating open cameras: Camera State
------------------------------------------------------------------- Camera@dd4530c[id=1] UNKNOWN
Camera@721ce9d[id=0] OPENING
Camera@3be637[id=2] UNKNOWN
------------------------------------------------------------------- Open count: 1 (Max allowed: 1) D/Camera2CameraImpl: {Camera@721ce9d[id=0]} Cancelling scheduled re-open: androidx.camera.camera2.internal.Camera2CameraImpl$StateCallback$ScheduledReopen@a4eea9e D/Camera2CameraImpl: {Camera@721ce9d[id=0]} Opening camera. D/Camera2CameraImpl: {Camera@721ce9d[id=0]} Transitioning camera internal state: REOPENING --> OPENING D/CameraStateMachine: New public camera state CameraState{type=OPENING, error=null} from OPENING and null D/UseCaseAttachState: All use case: [androidx.camera.core.ImageCapture-f0c976a1-2b26-4655-88d6-6790eae98eb6206680605, androidx.camera.core.VideoCapture-c788dcee-3839-4ff7-ad80-908046a7a19e41671826, androidx.camera.core.Preview-45eb99ce-6730-444c-a6dc-e4baabab208b69765876] for camera: 0 D/Camera2CameraImpl: {Camera@721ce9d[id=0]} Unable to open camera due to validateClientPermissionsLocked:913: Caller "com.example.trucklogger" (PID 10105, UID 5516) cannot open camera "0" without camera permission D/Camera2CameraImpl: {Camera@721ce9d[id=0]} Transitioning camera internal state: OPENING --> REOPENING D/CameraStateMachine: New public camera state CameraState{type=OPENING, error=null} from OPENING and null D/Camera2CameraImpl: {Camera@721ce9d[id=0]} Attempting camera re-open in 1000ms: androidx.camera.camera2.internal.Camera2CameraImpl$StateCallback$ScheduledReopen@4421195 activeResuming = true

Any idea how could I fix it?! Thank you <3



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source