Android Studio: автоматически разрешать использование камеры для фотосъемки и захвата видео - PullRequest
0 голосов
/ 08 января 2020

Я создал систему с функцией камеры. Эта камера должна сделать фотографию и сохранить ее в базе данных. Если я захочу использовать функцию камеры, появится всплывающее сообщение, чтобы приложения могли использовать камеру или нет. Если я нажму «Разрешить», я могу сделать фотографию с камеры. Но когда я нажимаю «Запретить», то, если я нажимаю кнопку камеры назад, приложение перестает работать.

Таким образом, я хочу, чтобы разрешение камеры автоматически разрешалось, что означает, если пользователь нажимает камеру кнопка, там нет всплывающего сообщения, чтобы выбрать разрешить или запретить. Может кто-нибудь хочет знать, как решить?

Ниже мой текущий код для камеры

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_task_update_before);

            EnableRuntimePermission();

            btnCameraBefore.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

                    startActivityForResult(intent, 7);

                }
            });
        }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 7 && resultCode == RESULT_OK) {

            Bitmap bitmap = (Bitmap) data.getExtras().get("data");

            imgAttachBefore.setImageBitmap(bitmap);
            photoBefore();
        }

    }

    public void EnableRuntimePermission(){

        if (ActivityCompat.shouldShowRequestPermissionRationale(TaskUpdateBefore.this,
                Manifest.permission.CAMERA))
        {

            Toast.makeText(TaskUpdateBefore.this,"CAMERA permission allows us to Access CAMERA app", Toast.LENGTH_LONG).show();

        } else {

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

    @Override
    public void onRequestPermissionsResult(int RC, String per[], int[] PResult) {

        switch (RC) {

            case RequestPermissionCode:

                if (PResult.length > 0 && PResult[0] == PackageManager.PERMISSION_GRANTED) {

                    Toast.makeText(TaskUpdateBefore.this,"Permission Granted, Now your application can access CAMERA.", Toast.LENGTH_LONG).show();

                } else {

                    Toast.makeText(TaskUpdateBefore.this,"Permission Canceled, Now your application cannot access CAMERA.", Toast.LENGTH_LONG).show();

                }
                break;
        }
    }

Ответы [ 2 ]

0 голосов
/ 09 января 2020

Обычно вы хотите, чтобы ваш пользователь имел доступ к остальным вашим функциям, даже если они не принимают все разрешения, а затем дает им возможность принять разрешение позже.

Мое предложение: Закрыть ваша камера, когда разрешение не разрешено. Если вы хотите, вы можете передать сообщение через ваше намерение, чтобы отобразиться на предыдущем экране. Однако добавление finishActivity() должно помочь, не пропуская сообщение.

@Override
public void onRequestPermissionsResult(int RC, String per[], int[] PResult) {

    switch (RC) {

        case RequestPermissionCode:

            if (PResult.length > 0 && PResult[0] == PackageManager.PERMISSION_GRANTED) {

                Toast.makeText(TaskUpdateBefore.this,"Permission Granted, Now your application can access CAMERA.", Toast.LENGTH_LONG).show();

            } else {

                Toast.makeText(TaskUpdateBefore.this,"Permission Canceled, Now your application cannot access CAMERA.", Toast.LENGTH_LONG).show();
                finishActivity();

            }
            break;
    }
}
0 голосов
/ 08 января 2020

это невозможно, это android цель безопасности, заложенная при использовании своих аппаратных сервисов. лучший способ сделать это - запросить разрешение камеры при запуске (вы можете запустить приложение, если оно не имеет доступа, вы можете закрыть приложение, чтобы оно не работало), но если вы настроите разрешение на доступ, вам следует запустить приложение. (кстати, разрешающее разрешение один раз, больше не будет всплывать)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...