Разрешения времени выполнения - PullRequest
0 голосов
/ 08 июня 2018

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

enter image description here

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Пример ЗАПРОСА О РАЗРЕШЕНИИ ХРАНЕНИЯ

Запрос разрешения

private int STORAGE_PERMISSION = 1;
private AlertDialog alertDialog;

if (!(ActivityCompat.checkSelfPermission(LauncherActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)) {
            ActivityCompat.requestPermissions(LauncherActivity.this, new
      String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, STORAGE_PERMISSION);
}

После запроса разрешения.Операция вернется к этому методу

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == STORAGE_PERMISSION && (ActivityCompat.checkSelfPermission(LauncherActivity.this,Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED)){
     // when user denied the permission
     // show dialog to user that the permission is mandatory and add positiveButton. inside the button recall permission check.

            alertDialog();
  }
}

Метод, отвечающий за диалог оповещения

private void alertDialog(){

    AlertDialog.Builder builder = new AlertDialog.Builder(this);

    builder.setTitle("your title").setMessage("your message for user to request to accept permissions");
        builder.setPositiveButton("Accept", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                if (!(ActivityCompat.checkSelfPermission(LauncherActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)) {
                    ActivityCompat.requestPermissions(LauncherActivity.this, new
                String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, STORAGE_PERMISSION);
        }
            }
        });

    alertDialog = builder.create();
        alertDialog.show();
}
0 голосов
/ 08 июня 2018

, когда пользователь отключает разрешения приложения из настроек, возможно ли это?

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

Когда ваше приложение находится в фоновом режиме

Отображение уведомления о пропущенном разрешении.Когда пользователь нажимает на уведомление:

  • Перенаправить его / ее к деятельности, где вы можете запросить разрешение
  • Перенаправить его / ее на экран настроек.

Когда ваше приложение находится на переднем плане

, вы можете показать обоснование разрешения, чтобы подчеркнуть важность разрешения.Android предоставляет служебный метод shouldShowRequestPermissionRationale(), который возвращает значение true, если пользователь ранее отклонил запрос.Когда этот метод возвращает true, покажите обоснование.

Причина, по которой вы видите диалоговое окно на экране настроек

Вы видите диалоговое окно, потому что приложение, для которого выотключить разрешение имеет targetSDkversion < Android M.Система включила режим совместимости для предоставления разрешения во время установки, но поскольку версия приложения несовместима с текущей ОС, она предупреждает пользователя об этом.

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