2

я это прочитанный официальным андроид блоге:Можно скомпилировать с Api 23 (6.0) и сохранить старую систему разрешений (время установки)?

Разрешения Изменения С Зефир, разрешения переместились из установки времени во время выполнения программы. Это обязательное изменение для SDK 23+, , что означает, что это повлияет на всех разработчиков и все приложения, ориентированные на Android 6.0.

Итак ... можно ли использовать старые системы разрешений, если вы скомпилируете с Android 6.0 (api 23), но вы нацеливаете Android 4.4 (api 20)?

Я имею в виду сделать это:

compileSdkVersion 'Google Inc.:Google APIs:23' 
    buildToolsVersion "23.0.1" 

    defaultConfig { 
     minSdkVersion 10 
     targetSdkVersion 20 
    } 

Предпосылками моего проекта для теперь сохранить старую систему разрешений и целевой SDk версии 20 (потому что мне нужно сохранить старую систему оповещения, и если вы нацелены sdk версии выше 20, вы должны использовать новую систему уведомлений). Итак ... могу ли я скомпилировать с Api 23 и поддерживать старую систему разрешений, если я целевую версию sdk 20?

Благодаря

+2

«targetSdkVersion» должно быть тем, что определяет, используется ли новая модель разрешения. Это кажется очень легким для тестирования; просто запустите приложение на устройстве (или эмуляторе) под управлением Android 6.0 или новее. – Michael

ответ

7

Да будет использоваться старая система разрешения (даже на Android 6.0), если targetSdkVersion установлен < 23. Однако пользователь на Android 6.0 позже можно вручную отключить отдельные разрешения от Настройки. Хотя Android 6.0 будет предупреждать пользователя, когда они попытаются это сделать, но они могут отменить все равно.

Теперь вопрос приведет к сбою приложения после того, как пользователь аннулирует разрешение?

Когда мы называем функцию, которая требует от пользователя разрешения аннулирована на приложении с targetSdkVersion менее 23, не исключение не будет быть выброшено. Вместо этого он просто ничего не сделает. Для функции , возвращающей значение, она вернет либо нуль, либо 0, зависит от случая . Хотя приложение не будет разбито при вызове функции . Он все еще может сбой с того, что это приложение делает в следующем с возвращенным значением.

+2

Это был очень важный фрагмент информации для нашего проекта, в котором мы запускаем наше приложение, а не телефон, но на чипсете Qualcomm Snapdragon, на котором работает Android 6. мы не можем устанавливать разрешения, поскольку нет отображения, его безголовая установка. Я просто изменил targetSDK на 22, и теперь приложение не запрашивает разрешения. Большое спасибо за ваш ответ. Производители платформ должны были полностью отключить модуль разрешений со своего изображения на Android, и я уверен, что им придется в конечном итоге, в противном случае, эти платы без дисплея в будущем будут не очень практичными. – zeeshan