Comments 17
А что будет со старыми приложениям, у которых опасные permissions прописаны в манифесте?
Если у них targetSdk 22 или ниже, то все будет хорошо, пермишены они получат автоматом.
Но пользователь может зайти в настройки, и запретить приложению доступ к любому из сервисов, например, к камере. Его система предупредит:«Не надо так, приложение не оптимизировано, может упасть!».
Но он все равно может запретитить. В этом случае SecurityException не вывалится, а будут следующие сценарии, для локейшн и камеры, к примеру, будут возвращены null, для контактов — пустой список или пустой контакт.
Но пользователь может зайти в настройки, и запретить приложению доступ к любому из сервисов, например, к камере. Его система предупредит:«Не надо так, приложение не оптимизировано, может упасть!».
Но он все равно может запретитить. В этом случае SecurityException не вывалится, а будут следующие сценарии, для локейшн и камеры, к примеру, будут возвращены null, для контактов — пустой список или пустой контакт.
Тогда какой стимул будет для «плохих» приложений обновлять sdk на > 22?
Как бы более низкая выдача в поиске.
фишки нового api не задействовать, саппорты новые не запустить, плей сервисы — много всего
Нет смысла оставаться на старом SDK. Всё равно ОС не даст разрешения или пользователь их отрубит, а отреагировать на старом SDK не получится корректно.
А еще важное замечание: нормальные разрешения пользователь не может отозвать, если они уже были даны при установке приложения
Doze Mode может серьёзно поломать моё приложение, предвижу жалобы от пользователей. Моя софтина коннектится к цифровой камере и управляет ею по проводу или Wi-Fi. Вот как, например, снимать time lapse, который может длиться много часов, если через час девайс заснёт, невзирая на мой wake lock?
При старте просить добавить свое приложение в Whitelist (… Приложениям из Whitelist не страшны ни Doze Mode ни App Standby).
А если у нас приложение будильник, то мы должны обязательно вызвать для Alarm setAndAllowWhileIdle() или setExactAndAllowWhileIdle().Хоть автор и заблуждается насчёт будильника, эти методы действительно разбудят телефон (AlarmManager API23+).
А для будильника нужно продолжать использовать setAlarmClock().
Вот еще хорошая заметка о новом механизме Permissions: code.tutsplus.com/articles/understanding-permissions-in-android-m--cms-24443 (eng). Вот прямо сегодня добавлял в одно из своих приложений, все просто и понятно.
Описать только PROTECTION_NORMAL запросы в manifest
Небольшое уточнение, в manifest нужно описывать все permissions, а не только из normal категории. Отличие в том, что для normal, разрешения система выдаст автоматически, а для остальных нужно будет воспользоваться новой схемой запроса разрешений в коде. Очевидно, что в manifest запросы пригодятся системе и для обратной совместимости.
Sign up to leave a comment.
Android 6.0: Doze Mode, App Standby, Runtime Permissions. Всё, что необходимо знать каждому разработчику