Я написал приложение, которое использует system_alert_window на износе Android. Начиная с зефира, это разрешение по умолчанию аннулировано. Я включил это разрешение в приложении на стороне телефона в настройках телефона. Но разрешение по-прежнему отказано в приложении на стороне износа Android и приводит к сбою приложения на стороне износа Android с исключением отказа в разрешении. Есть ли способ включить это разрешение на стороне износа Android?
Запрос разрешений на Android Wear
Ответы (2)
Краткий ответ: оставьте приложение для часов targetSdkVersion 22.
Длинный ответ: это разрешение не использует обычный поток requestPermissions(). Дополнительную информацию можно найти в документах, но она сводится к специальный пользовательский интерфейс настроек для пользователя, чтобы включить это разрешение — и не похоже, чтобы Google реализовал этот пользовательский интерфейс на износе. Без него ни одно (несистемное) приложение не может получить это разрешение, и любое приложение, которое попытается его использовать, вылетит из-за ошибки, подобной следующей:
android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@a597673 -- permission denied for this window type
Но это ограничение применяется только к приложениям, предназначенным для SDK уровня 23 (и выше). Так что пока оставьте свое приложение на уровне 22, и, надеюсь, Google восполнит этот пробел до того, как вам понадобится увеличить его.
ОБНОВЛЕНИЕ 22 декабря 2016 г.: эта проблема исправлена в Android Wear 2.0. По-прежнему нет лучшего решения, чем приведенное выше, для Wear 1.x, но Google реализовал пользовательский интерфейс разрешений для Wear 2, и когда он будет выпущен, приложения для часов должны иметь возможность ссылаться на него со стандартным намерением:
startActivity(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName())));
Вы должны динамически запрашивать разрешения у пользователя на носимых устройствах так же, как и на стороне телефона. Ознакомьтесь с официальным руководством Запрос разрешений на Android Wear< /а>