Не удается обработать нажатие кнопки «Разрешить» в диалоговом окне разрешений во фрагменте - PullRequest
0 голосов
/ 07 июля 2019

Android Studio 3.4.

Вот как я показываю диалоговое окно с разрешениями во фрагменте:

private boolean checkAndRequestPermissions() {
    int internet = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.INTERNET);
    int loc = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION);
    int loc2 = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION);
    List<String> listPermissionsNeeded = new ArrayList<>();
    if (internet != PackageManager.PERMISSION_GRANTED) {
        listPermissionsNeeded.add(Manifest.permission.INTERNET);
    }
    if (loc != PackageManager.PERMISSION_GRANTED) {
        listPermissionsNeeded.add(Manifest.permission.ACCESS_COARSE_LOCATION);
    }
    if (loc2 != PackageManager.PERMISSION_GRANTED) {
        listPermissionsNeeded.add(Manifest.permission.ACCESS_FINE_LOCATION);
    }
    if (BuildConfig.DEBUG)
        Log.d(TAG, "checkAndRequestPermissions_listPermissionsNeeded(" + listPermissionsNeeded.size() + ")");
    if (!listPermissionsNeeded.isEmpty()) {
        ActivityCompat.requestPermissions(getActivity(), listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]), 1);
        return false;
    }
    return true;
}

Вот результат:

enter image description here

Ницца.Но мне нужно обработать нажатие кнопки Разрешить выполнить определенную операцию.

Ответы [ 2 ]

1 голос
/ 07 июля 2019

Вы должны переопределить onRequestPermissionsResult следующим образом:

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    switch (requestCode) {
        case 1: {
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // user pressed ALLOW

            } else {
                // user pressed DENY
            }
            return;
        }
    }
}
0 голосов
/ 07 июля 2019

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

if (internet == PackageManager.PERMISSION_GRANTED) {
    //internet allowed
}
if (loc == PackageManager.PERMISSION_GRANTED) {
    //loc allowed
}
if (loc2 == PackageManager.PERMISSION_GRANTED) {
    //loc2 allowed
}

Это должно решить вашу проблему.

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