machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Легко обрабатывать разрешения Android, даже когда пользователь постоянно отказывает в этом

Дата публикации Oct 3, 2019

Обработка динамических разрешений в Android в одной строке кода

Android M + Динамические разрешения

Сегодня я публикую эту статью, так как я создал библиотеку Android, чтобы проверить и запросить одно или несколько разрешений для получения точного статуса разрешения, например,Разрешается,Еще не запрошено и будет запрошено / временно отказано (только один раз)илиОтказано навсегда.

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

Сначала мы рассмотрим, как разрешение приложения работает в потоке.


Поток разрешений Android работает

ПК.:Программирование Lite на Medium

Как мы видим на изображении выше, в 3 случаях поток разрешений идет.

Случай 1
Разрешение никогда не запрашивается приложением.

Дело 2
Разрешение запрошено один или несколько раз, но пользователь временно отказал (без проверки«Никогда не спрашивай снова»)

Дело 3
Разрешение запрошено, и пользователь отклонил его навсегда (проверяя«Никогда не спрашивай снова»опция)

Только одна функция может помочь нам«ShouldShowRequestPermissionRationale ()»,который возвращает логическое значение true или false на основе этих случаев.

Дело возвращает ИСТИНА:

  1. Когда приложение запросило разрешение хотя бы один раз, а пользователь временно отказал ему.

Случай возвращает ЛОЖЬ:

  1. Приложение никогда не запрашивало необходимое разрешение раньше.
  2. Приложение запросило разрешение, а пользователю отказано в разрешении

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

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

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

Promact / динамическое разрешение обработка-андроид

Эта библиотека создана, чтобы помочь разработчикам проверить состояние запрашиваемого разрешения, которое либо разрешено, но не…

github.com

Эта библиотека вернет ответ со статусом как,

РАЗРЕШАЕТСЯ

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

DENIED_PERMANENTLY

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

PermissionUtils.askUserToRequestPermissionExplicitly ()

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

НЕ ДАНО

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


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

Promact / динамическое разрешение обработка-андроид

Эта библиотека создана, чтобы помочь разработчикам проверить состояние запрашиваемого разрешения, которое либо разрешено, но не…

github.com

Оригинальная статья

Footer decor

© machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map