Какие разрешения не остаются при обновлении до targetSdk 23 или Android 6?

Фон

Я помню, что было сказано (в одном из видео от Google), что если предыдущая версия приложения была обновлена, чтобы в новой версии был targetSdk 23, ВСЕ разрешения, которые были предоставлены ранее, останутся предоставленными сейчас.

Так, например, если вы установили приложение с targetSdk 22, для которого требовалось разрешение на чтение из контактов, то даже после обновления приложения до цели с targetSdk 23 оно останется таким же.

Причина проста: пользователь уже предоставил разрешения при установке.

Эта проблема

Согласно тому, что я нашел, есть исключение из этого правила:

Если ваше приложение имело разрешение SYSTEM_ALERT_WINDOW, и теперь вы обновляете его до targetSdk 23, оно отменяется (сбрасывается), и вам необходимо запросить его у пользователя.

Это поведение не упоминается нигде в документации:

И также не в любом видео, которое я смотрел.

Единственное, что упоминалось о разрешении SYSTEM_ALERT_WINDOW, это то, что вам нужно обрабатывать их по-разному, используя ACTION_MANAGE_OVERLAY_PERMISSION для запроса разрешения и Settings.canDrawOverlays(...), чтобы проверить, предоставлено ли разрешение

Что я пробовал

Я попытался связаться с Google по этому вопросу, и они сказали, что это намеренно:

Я говорил с командой разработчиков, и поведение, которое вы видите, работает так, как задумано. Это задокументировано здесь: http://developer.android.com/reference/android/Manifest.permission.html

Уровень защиты SYSTEM_ALERT_WINDOW был повышен в Android M.

Вопросы

  1. Есть ли другие разрешения, которые имеют такое поведение?

  2. Что произойдет, если в приложении будет targetSdk 22/23 и произойдет обновление ОС до Android 6? Будет ли отзываться SYSTEM_ALERT_WINDOW (или любое другое разрешение)?

  3. Я уверен, что другие вещи останутся предоставленными, но я хотел бы спросить в любом случае: как насчет других специальных функций, подобных полномочиям, таких как: SAF, администратор, доступ к использованию, доступ к доступности, доступ к уведомлениям, ...?


РЕДАКТИРОВАТЬ: о #2, вот ответ от Google (ссылка здесь):

При обновлении ОС приложение должно сохранять SYSTEM_ALERT_WINDOW. Приложения до API 23 имеют разрешение по умолчанию, в отличие от приложений API 23, которые по умолчанию отключены. Однако существует известная ошибка, что для приложений API 23 они теряли SYSTEM_ALERT_WINDOW при обновлении. Для разработчика рекомендуется всегда проверять состояние SYSTEM_ALERT_WINDOW при запуске и, если не предоставлено, направлять пользователя в Настройки. Мы исправим проблему в следующем выпуске.

0 ответов

Другие вопросы по тегам