Динамически запрашивать разрешение на Android

Можно ли динамически запрашивать разрешение Android?

1
nl ja de

4 ответы

Android M представляет новую модель разрешения во время выполнения, которая позволяет вам это делать.

4
добавлено

Да, если устройство работает под управлением Android 6.0 или выше, а целевой SDK вашего приложения - 23 или выше.

фрагмент кода:

 if(ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.READ_PHONE_STATE}, 1);
    }
    int result = ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_PHONE_STATE);
    if (result == 0)
        //function which uses the permission

}

3
добавлено

This solution address devices targeting API < 23, for 23 and above see Aun answer.

Хотя многие ответят на этот вопрос НЕТ и скажут вам, что это риск для безопасности, я нашел способ!

Посмотрите ASTRO File Manager , один из приложение для файлового менеджера famud для Android. Он может просматривать вашу SD-карту, показывать ваши изображения, видео и самое интересное, он может установить APK!

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

По опыту пользователя, похоже, что вы запрашиваете разрешение во время выполнения.

1
добавлено
@Babibu: «По опыту пользователя будет похоже, что вы запрашиваете разрешение во время выполнения» - нет, похоже, что вы устанавливаете приложение, которое запрашивает определенные разрешения. Вы не можете тихо установить приложение, поэтому пользователю нужно будет пройти через несколько экранов (включая список разрешений), чтобы завершить процесс установки. Пользователь также увидит ваше приложение в списке установленных приложений и т. Д. То, что вы описываете, является плагиновой моделью, которая является прекрасной техникой, но ее не следует путать с «динамическим запросом на Android», что невозможно.
добавлено автор CommonsWare, источник

From targetapi>22 android need to have runtime permissions for performing some operations,Following is the code for requesting permission at run time in android

//checking wether the permission is already granted
  if(ContextCompat.checkSelfPermission(this,    
                 Manifest.permission.READ_CONTACTS) ==PackageManager.PERMISSION_GRANTED){

 //permission is already granted


    }else{

       //persmission is not granted yet
       //Asking for permission
       ActivityCompat.requestPermissions(this,new String[]   {
           Manifest.permission.READ_CONTACTS},REQUEST_CODE);

    }

Вышеприведенный код предназначен для запроса разрешений на чтение контактов. Аналогичным образом вы можете запросить другие разрешения также на основе вашего требования. Refer Как запросить разрешение времени выполнения в android для получения более подробной информации

0
добавлено
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)