Рубрики
Без рубрики

Несколько Разрешений во время выполнения в Android Без каких-либо сторонних Библиотек

Узнайте о добавлении нескольких разрешений во время выполнения в этом пошаговом руководстве в этой статье… С тегами android, java, android dev, todayilearned.

Узнайте о добавлении нескольких разрешений во время выполнения в этом пошаговом руководстве

Эта статья является частью Сегодня я узнал сериал и первоначально был размещен на моем ДО репозитория Github и мой веб-сайт по адресу wajahatkarim.com

В моем текущем проекте на работе у меня была задача добавить разрешения во время выполнения в приложение для Android, код которого очень старый и использует устаревшие методы и фреймворки/инструменты. Обычно я использую Разрешения Ted во всех моих приложениях для разрешений во время выполнения и я должен сказать, что это чертовски удивительная библиотека, которую я когда-либо видел, учитывая сложный сценарий и поток разрешений во время выполнения в Android ( ( ( ( спасибо Google, который всегда старается сделать все более сложным, чем когда-либо)

ПаркСангГвон/Разрешение Ted

Представлен Android Разрешения во время выполнения в API уровня 23 (Android Marshmallow 6.0) или более поздних версиях . Разрешения имеют очень сложный процесс реализации, как показано на рисунке ниже:

Кредит на изображение: Разрешения Ted

Сегодня, когда я искал очень простой подход к этому, я был потрясен, увидев, что Google сделал эту простую вещь настолько сложной и запутанной для реализации, точно так же, как они сделали с API-интерфейсами камер. Мне потребовался целый день, чтобы просто добавить два простых разрешения во время выполнения в начале моего кода. Вот как я это сделал.

ВАЖНО: Вы не должны запрашивать все разрешения сразу. Скорее всего, вы должны запросить соответствующее разрешение только в то время, когда оно должно быть использовано. Я запрашиваю все разрешения при запуске, потому что наша кодовая база очень старая и сложная.

Моему приложению требовалось Хранение и Местоположение разрешения. Итак, добавьте эти разрешения в файл манифеста Android следующим образом:

Теперь, как только приложение запускается, оно запрашивает оба разрешения (Местоположение и хранилище). Если предоставлены оба разрешения, то приложение работает нормально с обычной функциональностью. Мы можем сделать это в методе onCreate() нашего первого действия, как показано ниже:

Пожалуйста, обратите внимание в приведенном выше коде, что я создал массив String[], который содержит все разрешения, которые мы будем запрашивать здесь. Теперь давайте реализуем метод проверки и запроса разрешений().

Как мы можем видеть в приведенном выше коде, мы можем проверить статус любого разрешения с помощью метода ContextCompat.checkSelfPermission(). И мы можем запросить любое разрешение с помощью метода ActivityCompat.requestPermissions(). Эти методы уже включены в библиотеку поддержки.

Теперь, если список Необходимых разрешений не пуст, это означает, что по крайней мере в одном или нескольких разрешениях было отказано. Итак, метод requestPermissions() покажет диалоговое окно разрешения и вызовет onRequestPermissionsResult() метод обратного вызова

Теперь, вот как все происходит после запроса разрешений. В первый раз Android покажет разрешения в обычном режиме. Если все будут приняты, то все пойдет нормально. Если какой-либо из них или все они отклонены, то отображается диалоговое окно с объяснением (созданное разработчиком), чтобы сообщить пользователю, почему разрешения важны. И это диалоговое окно позволит пользователю снова предоставить разрешения. Теперь Android снова покажет диалоговое окно разрешения, но на этот раз с дополнительным флажком “Никогда не спрашивать снова”.

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

Экран разрешений для Chrome на Android

Мы можем сделать это с помощью другого метода ActivityCompat.shouldShowRequestPermissionRationale(контекст, разрешение), который сохраняет запись для проверки “Никогда не спрашивать снова”. Если этот метод возвращает значение true, это означает, что Android покажет диалоговое окно запроса разрешения. И если значение false, Android не покажет диалоговое окно, поскольку пользователь установил флажок “Никогда не спрашивать снова”. Итак, здесь вам нужно будет перенаправить пользователя на экран Настройки -> Разрешения, чтобы разрешить пользователю предоставлять разрешения вручную.

Теперь давайте посмотрим код в методе onRequestPermissionsResult(). Я также добавил несколько комментариев, так что это должно быть само собой разумеющимся.

А вот и метод ShowDialog(). Это просто для создания AlertDialog.

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

Ваджахат Карим выпускник НИТУ, Исламабад, опытный разработчик мобильных устройств, активный участник проекта с открытым исходным кодом и соавтор двух книг/| Изучение намерений Android и Освоение разработки игр для Android с помощью Unity . В свободное время он любит проводить время со своей семьей, проводить эксперименты по программированию, любит писать о многих вещах (в основном в блогах и СМИ) и является страстным участником open source. В июне 2018 года одна из его библиотек стала №1 на Github В тренде . Его библиотеки имеют около 2000 звезд на Github и используются в различных приложениях разработчиками по всему миру. Следите за ним в Twitter и Medium , чтобы получать больше обновлений о его работе в области написания текстов, Android и Open Source.

Ваджахат Карим (@Wajahatali) | Твиттер

Кроме того, если у вас есть какие-либо вопросы, на которые вы хотели бы, чтобы он ответил, свяжитесь с ним через его веб-сайт по адресу wajahatkarim.com с УВАЖАЕМЫМ ВАДЖАХАТОМ в теме письма.

Оригинал: “https://dev.to/wajahatkarim/multiple-runtime-permissions-in-android-without-any-third-party-libraries-324l”