проверьте пользовательское разрешение, указав c разрешение после открытия настройки - PullRequest
0 голосов
/ 05 марта 2020

когда пользователь установил флажок Не спрашивать снова и нажал DENY, я обновляю представление, показывая кнопку, чтобы при каждом повторном изменении настройки разрешения не нужно открывать настройку и изменять разрешение, и нажав Настройка кнопки включения откроется.

Я использовал приведенный ниже код для открытия настройки:

Intent intent = new Intent();
        intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
        Uri uri = Uri.fromParts("package", mContext.getApplicationContext().getPackageName(), null);
        intent.setData(uri);
        startActivityForResult(intent, PERMISSIONS_REQUEST_CAMERA);

, но в onActivityResult даже пользовательский грант или нет, код результата равен 0, и я могу не понимаю запустить камеру или нет в моем фрагменте.

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == PERMISSIONS_REQUEST_CAMERA)
            if (resultCode == Activity.RESULT_OK)
                startCamera();
            else {
                changeUiToNotGrantedView();
            }
    }

1 Ответ

0 голосов
/ 05 марта 2020

Когда пользователь возвращается из настроек, вам следует просто еще раз проверить, предоставлено ли сейчас разрешение или нет с помощью requestPermissions( arrayOf(Manifest.permission.CAMERA), YOUR_REQUEST_CODE).

Если пользователь предоставил разрешение камеры в настройках, вы узнаете это в onRequestPermissionsResult(...) и на основе что вы можете запустить камеру или нет.

...