Действие по установке / обновлению разрешения Android M

С Android Marshmallow появилась новая модель разрешения. Реализация новой модели не была большой проблемой для моих затронутых прав приложений. Но возникли некоторые проблемы вокруг поведения установки и обновления. Я определил некоторые сценарии, которые важны для меня. Я знаю официальную документацию ( https://developer.android.com/preview/features/runtime-permissions.html ), и некоторые вещи могут быть ясными, но я хотел быть уверен.

  1. Приложение с целевым SDK макс. 22, установленный на устройстве M, и все предоставленные разрешения -> приложение для обновления с новой моделью разрешения

  2. Приложение с целевым SDK макс. 22, установленный на устройстве M, и все разрешения запрещены -> обновить приложение с новой моделью разрешения

  3. Установить приложение с целевым SDK 23 на устройстве M

  4. Приложение с целевым SDK 22 или 23 и всеми предоставленными разрешениями -> добавляет новое разрешение уже предоставленного разрешения группы (read_storage) и новое разрешение другой группы (read_contacts)

  5. Приложение с целевым SDK 23 и read_contacts предоставлено -> добавить другое разрешение из группы контактов (write_contacts)

Используя консоль разработчика и бета-тестирование с Android, я протестировал свои сценарии. Это мой результат. Большинство из них соответствовали моим ожиданиям, но я хочу также обобщить это. Может быть, это помогает одному из вас иметь одни и те же вопросы и просто хочет знать, ведет ли он себя так, как ожидалось. Не утверждается, что это завершено.

  1. Приложение с целевым SDK макс. 22, установленный на устройстве M, и все предоставленные разрешения -> приложение для обновления с новой моделью разрешения

    • После обновления приложения с целевыми разрешениями SDK 23 все еще предоставляется
  2. Приложение с целевым SDK макс. 22, установленный на устройстве M, и все разрешения запрещены -> обновить приложение с новой моделью разрешения

    • После обновления приложения с целевыми разрешениями SDK 23 по-прежнему запрещается
  3. Установить приложение с целевым SDK 23 на устройстве M

    • Устанавливает без какого-либо взаимодействия с пользователем или уведомления
    • Все разрешения запрещены после установки, должны быть предоставлены -> диалоговые окна с разрешениями отображаются как реализованные
  4. Приложение с целевым SDK 22 или 23 и всеми предоставленными разрешениями -> добавляет новое разрешение уже предоставленного разрешения группы (read_storage) и новое разрешение другой группы (read_contacts)

    • С write_storage автоматически предоставляет read_storage (консоль разработчика уже добавила это в информацию о разрешениях для APK)
    • Read_contacts запрашивает только read_contacts (консоль разработчика только отображает это конкретное разрешение для APK)
    • Ранее предоставленные разрешения в порядке, read_contacts необходимо предоставить
  5. Приложение с целевым SDK 23 и read_contacts предоставлено -> добавить другое разрешение из группы контактов (write_contacts)

    • Нет специальной обработки, разрешение может быть использовано без какого-либо дополнительного взаимодействия с пользователем
    • На более старых устройствах (целевой максимум 22) пользователь не уведомляется о новом разрешении, поскольку он уже предоставляет разрешение группы
    • При добавлении write_contacts в консоли разработчика разрешение отображается, но не помечено как новое (в информации о разрешении APK)