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

Задний план

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

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

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

Проблема

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

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

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

  • http://developer.android.com/reference/android/Manifest.permission.html#SYSTEM_ALERT_WINDOW
  • http://developer.android.com/guide/topics/security/permissions.html
  • http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html
  • http://developer.android.com/about/versions/marshmallow/android-6.0.html

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

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

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

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

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

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

Вопросы

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

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

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


EDIT: около # 2, вот ответ от Google (ссылка здесь ):

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

Solutions Collecting From Web of "Какие разрешения не остаются при обновлении до целевогоSdk 23 или Android 6?"