Accessibility API предусматривают работу через специальный сервис в системе Accessibility Service (a11y). Чтобы получить возможность отправлять ему для обработки определённые события, приложение должно добавить в манифест разрешение android.permission.BIND_ACCESSIBILITY_SERVICE
. Этот сервис может обрабатывать определённые события в системе (жесты, нажатия клавиш) раньше, чем другие приложения. Кроме того, этот сервис может сам внедрять определённые события KeyEvents, такие как нажатия кнопки «Вернуться назад», кнопки разделения экрана и так далее.
Из описания функциональности Accessibility Service понятно, что сервис исключительно полезен в разработке интерфейса мобильного приложения. Вот лишь небольшой список приложений, которые используют функциональность для инвалидов в своём интерфейсе:
- AutoInput
- Button Mapper
- Greenify
- Inputting+
- LastPass
- Swiftly Switch
- Tasker
- Type Machine
Например, на скриншоте внизу показано, как приложение LastPass запрашивает разрешение на использование функции для инвалидов, чтобы активировать функцию автозаполнения паролей в других приложениях Android.
Ни одно из вышеперечисленных приложений не использует службу a11y в соответствии с документацией Google, везде реализованы своеобразные читы. Скорее всего, абсолютное большинство приложений в Google Play, которые используют функции для инвалидов, на самом деле разработаны для вполне себе здоровых людей. До сих пор ни у кого не возникало проблем с этим, потому что Google не накладывала ограничений, как можно использовать API. Сейчас ситуация изменилась.
В письмах от Google сказано, что разработчики обязаны привести свои программы в соответствие с документацией по Accessibility Service, то есть исключить из приложений любую функциональность, не направленную непосредственную на помощь людям с ограниченными возможностями. Разработчики обязаны сделать это в течение 30 дней, иначе их приложения будут удалены из Play Store. Отказ подчиниться требованию означает также нарушение правил пользования сервисом, что может привести к блокировке аккаунта разработчика.
В качестве варианта Google рекомендует самостоятельно удалить своё приложение из каталога, чтобы не рисковать блокировкой аккаунта.
Для тех немногочисленных приложений, которые действительно помогают людям с ограниченными возможностями, рекомендуется добавить ясное объяснение для пользователя, зачем требуется получение разрешения на использование этого сервиса. В описание программы на сайте Google Play следует добавить фразу “This app uses Accessibility services”.
Ребята с XDA-Developers пытаются предположить, почему Google пошла на такие репрессивные меры. С одной стороны использование Accessibility Service вызывает небольшой лаг в интерфейсе, но вряд ли причина в этом. Скорее всего, Google беспокоится, что этот системный сервис начнут массово использовать вредоносные программы. Из его функциональности понятно, что он отлично подходит для скрытой записи нажатий клавиш (для кейлоггеров), фишинговых эксплоитов и прочих вредоносов. Если для пользователей активация Accessibility Service на устройстве станет привычной рутиной, то это угрожает их безопасности.
Уже зарегистрировано несколько случаев, когда вредоносному приложению удавалось обманным путём склонить пользователя активации Accessibility Service (см. информацию об эксплоите Cloak & Dagger).
Источник