Запрос разрешений на Android Wear

Я написал приложение, которое использует system_alert_window на износе Android. Начиная с зефира, это разрешение по умолчанию аннулировано. Я включил это разрешение в приложении на стороне телефона в настройках телефона. Но разрешение по-прежнему отказано в приложении на стороне износа Android и приводит к сбою приложения на стороне износа Android с исключением отказа в разрешении. Есть ли способ включить это разрешение на стороне износа Android?


person user2498079    schedule 30.12.2015    source источник


Ответы (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())));
person String    schedule 25.01.2016
comment
Когда marshmallow появится на Android? - person user2498079; 25.01.2016
comment
Только Google знает - и они обычно не объявляют даты для таких вещей. IOW, сейчас нет расписания как такового. - person String; 26.01.2016

Вы должны динамически запрашивать разрешения у пользователя на носимых устройствах так же, как и на стороне телефона. Ознакомьтесь с официальным руководством Запрос разрешений на Android Wear< /а>

person Michael Zhou    schedule 31.12.2015