Отключить кнопку «Больше не спрашивать», которая появляется, если пользователи во второй раз отказывают в разрешениях - PullRequest
0 голосов
/ 17 июня 2019

Мое приложение требует разрешения для запуска. Если пользователи отрицают разрешения на начальном запуске, он закроется. Если они запускают приложение во второй раз и снова отказывают в разрешениях, в третий раз они пытаются запустить приложение и оно запрашивает разрешения, в диалоговом окне также появится переключатель с параметром «Больше не спрашивать». Если пользователь нажмет, что приложение закроется, и при следующем запуске его разрешения не будут запрашиваться, что приведет к бесконечной дыре в петле. Пользователь будет открывать приложение, и оно будет постоянно падать, если только оно не удалит и не переустановит приложение. Как мы решаем эту проблему? можем ли мы кодировать так, чтобы радио-кнопка никогда не появлялась независимо от того, сколько раз пользователи отказывают в разрешениях? Есть ли другой неочевидный способ, которого я пропускаю Я могу сказать, что это будет проблемой, чтобы взломать ...

public void requestPermissions() {
    //Requesting permissions.
    ActivityCompat.requestPermissions(this,new String[] {
            Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.RECORD_AUDIO
    }, REQUEST_PERMISSION_CODE);
}

public boolean checkPermissionFromDenice() {
    //Checking whether permissions have been granted.
    int write_external_storage_result = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
    int record_audio_result = ContextCompat.checkSelfPermission(this,Manifest.permission.RECORD_AUDIO);
    return write_external_storage_result == PackageManager.PERMISSION_GRANTED && record_audio_result == PackageManager.PERMISSION_GRANTED;
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    //Returns user's input regarding the requested permissions.
    if (requestCode == REQUEST_PERMISSION_CODE) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show();
            finish(); //Killing the activity in case user accepts permissions so they set in.
        } else {
            Toast.makeText(this, "Permission not granted", Toast.LENGTH_SHORT).show();
            finishAffinity(); //Terminating the application in case user denies permissions.
        }
    }
}

1 Ответ

3 голосов
/ 17 июня 2019

Вы должны защитить свое приложение от пользователей, которые не хотят предоставлять разрешения.Вы должны предупредить их, что приложение не будет работать, и если разрешения не будут предоставлены позже, дайте пользователям инструкции, как они могут сбросить свои настройки разрешений и в противном случае отказаться от запуска остальной части приложения.

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

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