content: package org.opencv.android;
  
  import android.annotation.TargetApi;
  import android.app.Activity;
  import android.content.Context;
  import android.content.pm.PackageManager;
  import android.os.Build;
  import android.util.AttributeSet;
  import android.view.View;
  
  import java.util.ArrayList;
  import java.util.List;
  
  import static android.Manifest.permission.CAMERA;
  
  public class CameraActivity extends Activity {
  
      private static final int CAMERA_PERMISSION_REQUEST_CODE = 200;
  
      protected List<? extends CameraBridgeViewBase> getCameraViewList() {
          return new ArrayList<CameraBridgeViewBase>();
      }
  
      protected void onCameraPermissionGranted() {
          List<? extends CameraBridgeViewBase> cameraViews = getCameraViewList();
          if (cameraViews == null) {
              return;
          }
          for (CameraBridgeViewBase cameraBridgeViewBase: cameraViews) {
              if (cameraBridgeViewBase != null) {
                  cameraBridgeViewBase.setCameraPermissionGranted();
              }
          }
      }
  
      @Override
      protected void onStart() {
          super.onStart();
          boolean havePermission = true;
          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
              if (checkSelfPermission(CAMERA) != PackageManager.PERMISSION_GRANTED) {
                  requestPermissions(new String[]{CAMERA}, CAMERA_PERMISSION_REQUEST_CODE);
                  havePermission = false;
              }
          }
          if (havePermission) {
              onCameraPermissionGranted();
          }
      }
  
      @Override
      @TargetApi(Build.VERSION_CODES.M)
      public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
          if (requestCode == CAMERA_PERMISSION_REQUEST_CODE && grantResults.length > 0
                  && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
              onCameraPermissionGranted();
          }
          super.onRequestPermissionsResult(requestCode, permissions, grantResults);
      }
  }
  