1

After I install the app and open it, message "app has stopped" appears after which the permission dialog appears for granting camera permission. After I press "Allow" the app closes and when I open it the camera preview is showing so the app is working perfectly. I know that the error appears due to the fact that getCameraInstance() returns a null, which results from the user not granting permission to access camera. I can't make the permission dialog appear first, what should I do?

public class MainActivity extends AppCompatActivity {

public Camera mCamera;
private CameraPreview mPreview;
private static final int requestCode = 100;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);




    if(checkCameraHardware(MainActivity.this)){
        //Create instance of Camera
        mCamera=getCameraInstance();

    }else{
        Toast.makeText(MainActivity.this, "Cannot find camera", Toast.LENGTH_LONG).show();
    }


    mPreview = new CameraPreview(MainActivity.this, mCamera);
    FrameLayout preview = findViewById(R.id.camera_preview);
    preview.addView(mPreview);

}



private boolean checkCameraHardware(Context context){

    if(context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){
        return true;
    }
    else{
        return false;}

}


public Camera getCameraInstance(){

    Camera c = null;

    try{


        if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_DENIED){

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

        }
        c = Camera.open();

    }catch (Exception e){

        Log.d(TAG, "Error: " + e.getMessage());
    }

    return c;
}

}

Lucas Tony
  • 99
  • 2
  • 8

0 Answers0