1

Сегодня я тестировал одно из своих приложений на Android M (6.0). Я понял, что разрешение на предоставление в этой версии изменено, и мне нужно внести некоторые изменения, чтобы приложение совместимо с Android 6.0 (here is the details).Android 6.0 обратная совместимость

Как я понял, например, если я хочу предоставить доступ к записи sdcard (Eternal Storage), которая является опасным разрешением, я должен попросить пользователя предоставить доступ, а затем обработать решение пользователя (grant/deny), иначе всегда моя просьба всегда отвергается.

Я не знаю, прав я или нет, но я хочу знать, так или иначе, с обратной совместимостью? Я имею в виду, что все приложения, работающие в более старых версиях, необходимо изменить для работы в версии 6.0? Если специальное приложение больше не поддерживается, значит, андроид 6.0, где мы должны прощаться с ним?

И в этой новой атмосфере мне нужно изменить старые приложения, чтобы они работали в Зефир (если им нужны опасные разрешения)?

ответ

1

Поддерживается обратная совместимость. Из the page you linked,

  • Если устройство работает Android 5.1 или ниже, или вашего приложения целевой SDK является 22 или ниже: Если вы перечисляете опасное разрешение в манифесте, пользователь должен предоставить разрешение когда они устанавливают приложение; если они не предоставляют разрешения, система вообще не устанавливает приложение.
  • Если устройство работает под управлением Android 6.0 или выше, и целевой SDK вашего приложения составляет 23 или выше: приложение должно отображать разрешения в манифесте и должно запрашивать каждое опасное разрешение, в котором оно нуждается, пока приложение запущено , Пользователь может предоставлять или отклонять каждое разрешение, и приложение может продолжать работать с ограниченными возможностями, даже если пользователь отклоняет запрос на разрешение.

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

страница делает список один нюанс, вы должны быть в курсе:

Примечание: Начиная с Android 6.0 (уровень API 23), пользователи могут отзывать разрешения из любого приложения в любое время, даже если приложение нацелено на более низкий уровень API. Вы должны проверить свое приложение, чтобы убедиться, что оно ведет себя правильно, когда ему не хватает необходимого разрешения, независимо от того, какой уровень API соответствует вашим приложениям.

Это означает, что для ваших приложений, даже для устаревших, это то, что они должны иметь возможность выжить, не имея привилегии, которую вы обычно ожидаете от них. Проверьте и обновите соответствующим образом.

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

+1

Как я проверял, я могу вручную предоставить все опасные разрешения для приложения в настройках приложения. Внутри показано все опасное разрешение, указанное в манифесте, и я могу предоставить им постоянный доступ. – VSB

0

Из Android документации:

На всех версиях Android, приложение должно объявить как нормальный и опасные разрешения, необходимые в приложении манифеста, как и , описанной в объявлении разрешения. Тем не менее, влияние этого декларации отличается в зависимости от версии системы и вашего целевого уровня SDK приложения:

  • Если устройство работает под управлением Android 5.1 или ниже, или целевая SDK вашего приложения является 22 или ниже: Если вы указываете опасное разрешение в своем манифесте , пользователь должен предоставить разрешение при установке приложения ; если они не предоставляют разрешение, система вообще не устанавливает приложение.
  • Если устройство работает под управлением Android 6.0 или выше, и вашего приложение целевой SDK является 23 или выше: приложение должно перечислить разрешения в манифесте, и он должен просить каждое опасное разрешения ему необходимо в то время как приложение Бег. Пользователь может предоставить или отклонить каждое разрешение, и приложение может продолжать работать с ограниченными возможностями , даже если пользователь отказывает в запросе на разрешение.

Если вы хотите запустить приложение в Android 6.0, то вы должны написать логику для запроса разрешений во время выполнения.
Но это не изменит поведение вашего приложения в старых версиях, разрешения будут запрашиваться во время установки для этих случаев.

Смежные вопросы