В настоящее время я работаю над приложением, которое требует нескольких «опасных» разрешений. Поэтому я попытался добавить «запросить разрешение», как требуется в Android Marshmallow (API Level 23), но не смог найти, как это сделать.
Как я могу запросить разрешение на использование новой модели разрешений в моем приложении?
Ответы:
Откройте диалог, используя код ниже:
Получите результат активности, как показано ниже:
Дополнительная информация: https://developer.android.com/training/permissions/requesting.html
источник
ActivityCompat.requestPermissions
рекомендуется? (вЭту структуру я использую, чтобы проверить, есть ли у моего приложения разрешение, и затем запросить, если у него нет разрешения. Так что в моем основном коде, откуда я хочу проверить, напишите следующее:
Модуль checkIfAlreadyhavePermission () реализован так:
Модуль requestForSpecificPermission () реализован так:
и переопределить в активности:
Для получения более подробной информации перейдите по этой ссылке: http://revisitingandroid.blogspot.in/2017/01/how-to-check-and-request-for-run-time.html
источник
checkIfAlreadyhavePermission
кreturn result == PackageManager.PERMISSION_GRANTED;
Я использовал эту оболочку (рекомендуется), написанную разработчиками Google. Его супер прост в использовании.
https://github.com/googlesamples/easypermissions
Функция, связанная с проверкой и запросом разрешения, если требуется
Удачного кодирования :)
источник
Начиная с Android Marshmallow, нам нужно запросить у пользователя конкретные разрешения. Мы также можем проверить через код, если разрешение уже дано. Вот список часто необходимых разрешений:
Вот пример кода для проверки прав доступа:
источник
Мой класс для разрешения времени выполнения запроса в
Activity
илиFragment
Это также поможет вам показать логическое обоснование или открытые настройки для того, чтобы разрешение после пользователя отказан разрешения (с / без
Never ask again
) вариантом прощеИспользование в
Activity
лайкеКод на Github
демонстрация
источник
Android-M, т. Е. API 23 представил разрешения времени выполнения Е. для уменьшения недостатков безопасности на устройстве Android, где пользователи теперь могут напрямую управлять разрешениями приложений во время выполнения. Поэтому, если пользователь отказывает определенному разрешению вашего приложения, вы должны получить его, задав диалоговое окно разрешений. что вы упомянули в своем запросе.
Поэтому проверьте перед действием, т. Е. Убедитесь, что у вас есть разрешение на доступ к ссылке на ресурс, и если ваше приложение не имеет этого конкретного разрешения, вы можете запросить ссылку на разрешение и обработать ответ на запрос разрешения, как показано ниже.
Итак, наконец, это хорошая практика, чтобы пройти через изменения поведения, если вы планируете работать с новыми версиями, чтобы избежать принудительного закрытия :)
Разрешения Best Practices.
Вы можете пройти официальный образец приложения здесь .
источник
Из Android Marshmallow (API 23) и выше по умолчанию все опасные разрешения (согласно официальному документу официального документа ) отключены. После установки, когда приложение открывается в первый раз, вы должны предоставить разрешение во время выполнения.
Я достиг этого следующим образом:
В вашем классе деятельности:
источник
Добавьте разрешения в AndroidManifest.xml
Чтобы проверить версию Android, нужно ли разрешение во время выполнения или нет.
Попросите пользователя предоставить разрешение, если оно не предоставлено.
Сделайте что-нибудь, если разрешение было предоставлено или нет.
источник
Я использую это как базовый класс Fragment. Я спрашиваю только разрешения для фрагмента, но вы можете изменить его и сделать аналогичную версию Activity.
Есть два ключевых метода, которые вы должны использовать:
hasPermissionOrWillAsk - используйте этот параметр, чтобы узнать, запрашивается ли разрешение и отказывает ли его пользователь, который не хочет, чтобы его снова запрашивали. Это полезно для отключения пользовательского интерфейса, когда пользователь дал свой окончательный ответ о НЕ желании функции.
runNowOrAskForPermissionsFirst - используйте для запуска кода, для которого требуются разрешения. Если пользователь уже предоставил разрешение, код будет запущен немедленно. В противном случае код будет запущен позже, если пользователь предоставит разрешение. Или нет совсем. Это приятно, потому что вы указываете код в одном месте.
Вот пример:
Рад получить отзыв об этом. Не то, чтобы этот конкретный пример немного упрощался тем, что вам также необходимо проверить, включены ли службы местоположения на устройстве. (Это отличается от разрешений.) Кроме того, он поддерживает только одно разрешение за раз, но его было бы легко изменить, если вам нужно поддерживать более одного за один раз.
источник
Это может быть чище. Добавьте все ваши разрешения в массив, как
Независимо от вашего разрешения создать метод для каждого разрешения
Вызовите этот метод в onCreate
Теперь переопределите onRequestPermissionsResult
источник
Для нескольких разрешений одновременно вы можете использовать это. Эта работа для меня .. У меня есть другое решение. если вы дадите свой targetSdkVersion ниже 22, он работает для меня. и это ведет себя как получение разрешения от manifest.xml. Проверено и работает для меня.
Больше подробностей. Проверьте ссылку ниже
https://inthecheesefactory.com/blog/things-you-need-to-know-about-android-m-permission-developer-edition/en
источник
Для обработки разрешения времени выполнения Google предоставил проект библиотеки. Вы можете проверить это здесь https://github.com/googlesamples/easypermissions
EasyPermissions устанавливается путем добавления следующей зависимости в ваш файл build.gradle:
Чтобы начать использовать EasyPermissions, попросите вашу активность (или фрагмент) переопределить метод onRequestPermissionsResult:
Здесь вы получите рабочий пример того, как работает эта библиотека https://github.com/milon87/EasyPermission
источник
Существует хорошая библиотека, которую можно использовать в том случае, если необходимо запрашивать разрешения, когда разрешение требуется фоновой службе. Хотя ограничение библиотеки заключается в том, что она не может использоваться для определения того, предоставлены ли в данный момент разрешения приложению или нет. Он всегда спрашивает пользователя, если приложение еще не имеет их.
Попробуйте, так как это делает жизнь проще: разрешения для Android
источник
Этот код ниже работает отлично. Я объясняю с помощью примера.
В моем случае я поместил проверки разрешений отдельно в класс утилит и передал определенные разрешения, которые мне нужно проверить из соответствующих классов. Это позволило повторно использовать файл утилит проверки разрешений во всем приложении.
В приведенной ниже части кода показан вызов функции. В этом случае я запрашиваю
android.Manifest.permission.READ_EXTERNAL_STORAGE
разрешение.В приведенном выше случае проверяется разрешение, если оно разрешено,
onAttachPressed();
вызывается функция, иначе мы проверяем разрешение запроса.Ниже приведен код, присутствующий в классе util в моем случае
PermissionUtils
И после запроса, если вы хотите вызвать функцию из
onRequestPermissionsResult
или вам нужно будет снова нажать кнопку для вызова функции.Так что просто позвоните из
onRequestPermissionsResult
источник
Я использую библиотеку библиотеки RxPermission для запроса разрешения. Потому что это длинный код, который мы должны написать, чтобы спросить разрешения.
Добавьте эти зависимости в свой
build.gradle
источник
Попробуй это
Это самый простой способ запросить разрешение в версии «Зефир».
Примечание: - Не забудьте также добавить это же разрешение в файл манифеста.
Второй метод код для проверки разрешения выдается или нет?
И переопределить метод
источник
Простой способ получить разрешение, избегая написания большого количества кода,
https://github.com/sachinvarma/EasyPermission
Как добавить:
Как спросить разрешения:
Надеюсь, это будет полезно для кого-то.
источник
Я просмотрел все ответы, но не удовлетворил свой точный необходимый ответ, поэтому вот пример, который я написал и отлично работает, даже если пользователь нажимает флажок Больше не спрашивать .
Создайте метод, который будет вызываться, когда вы хотите запросить разрешение во время выполнения, например,
readContacts()
или вы также можете иметь его,openCamera()
как показано ниже:Теперь нам нужно сделать
askContactsPermission()
, вы также можете назвать это какaskCameraPermission()
или любое другое разрешение, которое вы собираетесь спросить.Перед написанием этой функции убедитесь, что вы определили приведенную ниже переменную экземпляра, как показано ниже:
Теперь последний шаг для переопределения
onRequestPermissionsResult
метода, как показано ниже:Здесь мы закончили с разрешениями RunTime, аддон,
openPermissionSettingDialog()
который просто открывает экран настроек, если пользователь навсегда отключил разрешение, установив флажок « Больше не спрашивать» . ниже метод:Что мы пропустили? 1. Определение используемых строк в
strings.xml
Инициализация
parentLayout
переменной внутриonCreate
методаparentLayout = findViewById (R.id.content);
Определение необходимого разрешения в
AndroidManifest.xml
queryContacts
Метод, основанный на вашей потребности или разрешения во время выполнения вы можете позвонить ваш метод , перед которымpermission
было необходимо. в моем случае я просто использую загрузчик, чтобы получить контакт, как показано ниже:Это прекрасно работает счастливое кодирование :)
источник
Если вы используете AndroidX Activity 1.2.0 или AndroidX Fragment 1.3.0 :
Существуют новые API Результата Действия, которые вы можете использовать для запроса разрешений:
источник
источник
Вы можете использовать мою библиотеку - NoPermission (это всего лишь один класс)
compile 'ru.alexbykov:nopermission:1.1.1'
Образец
onRequestPermissionResult:
Я думаю, что API удобнее, чем
EasyPermissions
Google.источник
Разрешение времени выполнения AnyWhere в приложении, вот пример
и код вызова, как это:
вы можете найти больше Github
источник
Разрешение во время выполнения создает много стандартного кода в деятельности, которая тесно связана. Чтобы сократить код и упростить задачу, вы можете использовать библиотеку Dexter .
источник
ВРЕМЕННОЕ РАЗРЕШЕНИЕ НА АНДРОИД
Метод OnClick - проверка разрешения во время выполнения.
и если разрешение ограничено, то он запрашивает разрешение
источник