запутался насчет прав на выполнение Android

Так что все эти новые права на выполнение Android запутали меня. Мое приложение в настоящее время компилируется и предназначается для версии 23, что означает, что я должен использовать разрешения времени выполнения. Мое приложение в основном использует API камеры, для которого требуется разрешение камеры, поэтому я добавил разрешения времени выполнения, прежде чем открывать камеру как таковую:

        if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.CAMERA)
                != PackageManager.PERMISSION_GRANTED)
        {//ask permissions for camera
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.CAMERA},
                    CameraPermissions);
        }
        else
        {//permissions attained now you can open the camera
            camera=Camera.open(getCid());
            camera.setPreviewCallback(this);
            initPreview(width, height);
            startPreview();
            startTimer();
        }

Я также проверяю, когда я останавливаю камеру:

       if (ContextCompat.checkSelfPermission(this,
                Manifest.permission.CAMERA)
                == PackageManager.PERMISSION_GRANTED) {
            camera.setPreviewCallback(null);
            camera.release();
            faceProc.release();
            faceProc = null;
            camera = null;
            inPreview = false;
            cameraConfigured = false;
        }

Запрос на разрешение обрабатывается так:

@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {
    switch (requestCode) {
        case CameraPermissions: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                StartUpCam();
            } else {

                // permission denied, boo! Disable the
                // functionality that depends on this permission.
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setMessage("How is this app going to work if you rejected the camera permission.... DUHHHH!!")
                        .setTitle("Rejected");
                builder.setPositiveButton("Exit App", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        //close application
                        closeApp();
                    }
                });
                AlertDialog dialog = builder.create();
                dialog.show();
            }
            return;
        }
    }
}

Поэтому, когда дается запрос, он вызывает StartUpCam, который затем пытается открыть камеру, если даны разрешения. Итак, вот мои вопросы, если я добавлю эту проверку разрешений во время выполнения, как это влияет на устройства Android ниже 6.0 ?? То есть телефон с версией 5.0.1 также получит запрос на предоставление разрешений для камеры? Если я использую разрешения времени выполнения, нужно ли мне удалять разрешения камеры в файле манифеста? В настоящее время я сохраняю разрешения камеры в манифесте вместе с разрешениями времени выполнения, которые я не знаю, правильно это или нет. Что если я уменьшу цель и скомпилирую sdk до 22 вместо 23, не смогут ли Android-устройства выше 6.0 загрузить мое приложение ??? Если я опущу его до версии 22, тогда я избегу всей этой головной боли ...

Ответы на вопрос(2)

Ваш ответ на вопрос