Какое разрешение нам нужно во время выполнения в 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   3   2016-08-16 13:58:37

6 ответов:

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Эти разрешения будут разрешениями времени выполнения вашего приложения

Для получения дополнительной информации:

Https://inthecheesefactory.com/blog/things-you-need-to-know-about-android-m-permission-developer-edition/en

Проверьте это поможет вам

В 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