2016-07-01 3 views
1

Простое изменение с android:targetSdkVersion="22" на "23" заставляет мое приложение разбиться на Galaxy S6. Что бы это вызвало? Откат и все в порядке.android: targetSdkVersion = "23" Сбой так, что Galaxy S6

не имеет S6, так что я не могу повторить - я уверен, что это что-то просто ...

+0

Возможно, было бы неплохо предоставить трассировку стека, когда ваш вопрос касается сбоя. – Vinnie

ответ

2

Наиболее вероятная причиной является разрешением, требуемых вашего приложения, указанным в манифесте.

«Начиная с Android 6.0 (уровень API 23) пользователи предоставляют разрешения для приложений во время работы приложения, а не при установке приложения». См Requesting Permissions at Run Time

В частности, если ваше приложение требует какого-либо из разрешений, указанных в таблице Dangerous permissions and permission groups, вам нужно будет реализовать код, чтобы попросить эти разрешения во время выполнения на устройствах, работающих под управлением 23 или выше. Если вы этого не сделаете, и вы попытаетесь выполнить задачу, требующую одного из этих разрешений, приложение выйдет из строя.
Стандартные (неопасные) разрешения, однако, автоматически предоставляются системой, если это необходимо, и их не нужно запрашивать отдельно во время выполнения.

Если вы хотите избежать этой проблемы, просто оставьте целевой SDK как 22. Если есть другие особенности SDK 23, которые вам особенно нужны, вам нужно будет пройти шаги, указанные в первой ссылке выше, чтобы разрешения запрашиваются во время выполнения на устройствах с 23 или более поздними версиями.

Зефир (23) теперь выпущен для Галактики S6 во многих регионах. Если вы узнаете, какая версия Android Galaxy S6, которая переживает крах, работает, я уверен, вы обнаружите, что это Marshmallow.

+0

Отличный ответ. Благодаря! –