Комплексное руководство по проверке разрешения на внешнее хранилище в Android

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

  1. Метод 1: использование ContextCompat.checkSelfPermission()

    if (ContextCompat.checkSelfPermission(
    context,
    Manifest.permission.READ_EXTERNAL_STORAGE
    ) == PackageManager.PERMISSION_GRANTED) {
    // Permission is granted
    } else {
    // Permission is not granted
    }
  2. Метод 2: запрос разрешения с помощью ActivityCompat.requestPermissions()

    if (ContextCompat.checkSelfPermission(
    context,
    Manifest.permission.READ_EXTERNAL_STORAGE
    ) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(
        activity,
        new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
        requestCode
    );
    }
  3. Метод 3: обработка результатов разрешений в onRequestPermissionsResult()

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    if (requestCode == requestCode) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            // Permission is granted
        } else {
            // Permission is denied
        }
    }
    }
  4. Метод 4. Проверка разрешения с помощью метода mustShowRequestPermissionRationale()

    if (ActivityCompat.shouldShowRequestPermissionRationale(
    activity,
    Manifest.permission.READ_EXTERNAL_STORAGE
    )) {
    // Explain to the user why the permission is required
    // and then request the permission using ActivityCompat.requestPermissions()
    } else {
    ActivityCompat.requestPermissions(
        activity,
        new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
        requestCode
    );
    }
  5. Метод 5. Использование библиотеки EasyPermissions (сторонняя библиотека)
    EasyPermissions — это библиотека, которая упрощает процесс запроса разрешений в Android. Он предоставляет аннотации и служебные методы для удобной обработки разрешений.

Обязательно включите библиотеку EasyPermissions в свой проект и следуйте документации для получения подробной информации о реализации.

@AfterPermissionGranted(requestCode)
private void methodWithPermissionCheck() {
    String[] permissions = {Manifest.permission.READ_EXTERNAL_STORAGE};
    if (EasyPermissions.hasPermissions(this, permissions)) {
        // Permission is granted
    } else {
        EasyPermissions.requestPermissions(
            this,
            "This app requires external storage permission",
            requestCode,
            permissions
        );
    }
}

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