Какое разрешение нам нужно во время выполнения в android 6.0
У меня есть android-код, который может хорошо работать на Android версии 5.0. Мой AndroidManifest.xml - это
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
Однако мой клиент, который использует Android 6.0 (LG G5), сообщил, что приложение не работает хорошо. У меня нет LG G5, чтобы проверить, в чем проблема. На мой взгляд, причина в том, что разрешение изменилось с 5.0 на 6.0. Не могли бы вы посмотреть на мое разрешение и дать мне некоторые улучшения/исправления для Android 6.0? Или у нас есть какой-либо способ автоматического добавления разрешения для Android 6.0. Благодарю все
6 ответов:
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />Эти разрешения будут разрешениями времени выполнения вашего приложения
Для получения дополнительной информации:
Проверьте это поможет вам
В Android 6.0 это включает:
ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION ADD_VOICEMAIL BODY_SENSORS CALL_PHONE CAMERA GET_ACCOUNTS PROCESS_OUTGOING_CALLS READ_CALENDAR READ_CALL_LOG READ_CELL_BROADCASTS READ_CONTACTS READ_EXTERNAL_STORAGE READ_PHONE_STATE READ_SMS RECEIVE_MMS RECEIVE_SMS RECEIVE_WAP_PUSH RECORD_AUDIO SEND_SMS USE_SIP WRITE_CALENDAR WRITE_CALL_LOG WRITE_CONTACTS WRITE_EXTERNAL_STORAGEДля этих разрешений не только ваше приложение targetSdkVersion 23+ должно иметь элемент(ы), но вы также должны запросить эти разрешения во время выполнения у пользователя на устройствах Android 6.0+, используя такие методы, как checkSelfPermission() и requestPermissions().
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />Этоопасные разрешения, вы должны запросить их во время выполнения науровне API 23+.
Полный список опасных разрешений можно найтиздесь .
Ознакомьтесь с руководством разработчика по Запрашиванию разрешений во время выполнения.
В вашем приложении должны принимать разрешения во время выполнения, а не во время установки приложения.
android.permission.WRITE_EXTERNAL_STORAGEявляется опасным разрешением согласно документации вы можете проверить это Dyanamic разрешение в 6.0
В Android Marshmallow управление разрешениями полностью отличается от предыдущих версий. Если вы нацелены на API 23, вам нужно будет попросить пользователя разрешить то или иное разрешение из приложения.
Взгляните на: разрешения для Android
Я думаю (не проверено), что если вы установите API 22 или меньше, у вас не будет проблем с разрешениями, хотя приложение установлено на устройстве с Android 6.0+
Android 6 улучшил способ обработки разрешений приложений android, если ваше приложение требует опасного разрешения (полный список здесь https://developer.android.com/guide/topics/security/permissions.html#normal-dangerous ) необходимо проверить, что разрешение выполняется во время выполнения, поэтому определения разрешения в манифесте недостаточно. Причина этого нового управления разрешениями связана с тем, что пользователи android могут включать / отключать разрешения приложений во время выполнения, поэтому ваш код должен быть в курсе что конкретные характеристики (камера, GPS и т. д.) не предоставляется по умолчанию и может изменяться с течением времени.
Есть много библиотек, которые помогают вам управлять разрешениями приложений, я думаю, что наиболее часто используется диспетчер разрешений: https://github.com/hotchemi/PermissionsDispatcher
Также взгляните на официальную документацию здесь: https://developer.android.com/training/permissions/requesting.html
Comments