Функции для людей с ограниченными возможностями (Accessibility API) исключительно удобны и используются наиболее инновационными приложениями в каталоге Google Play. Например, клавиши громкости на смартфоне можно переназначить на переход к следующему музыкальному треку, запись и воспроизведение нажатий на веб-страницах / в играх или даже для навигации, то есть перелистывания страниц, как в мобильном приложении gReader. Всё это функции для инвалидов, которые находчивые разработчики используют не по назначению. Сейчас компания Google выразила недовольство этим фактом. На сайте XDA Developers сообщают, что из Google Play разработчикам начали приходить предупреждения, что нельзя использовать Accessibility API иначе, чем предусмотрено в документации Google.

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).

Комментарии (54)


  1. dartraiden
    14.11.2017 18:31

    Демонстрация атак с использованием этих служб. Ни один из испытуемых пользователей даже не понял, что происходит что-то не то.
    Поэтому, у меня есть привычка отзывать у приложений доступ к функциям, которые мне не требуются.


    1. Teomit
      15.11.2017 07:50

      Можете подсказать с помощью чего вы отзываете у приложений доступ к ненужным функциям?


      1. Impuls
        15.11.2017 08:11

        Начиная с Android 6 появилась возможность давать разрешение для приложения.
        https://www.kaspersky.ru/blog/android-permissions-guide/14099/


      1. Stanislavvv
        15.11.2017 08:56

        В старых версиях андроида при наличии рута можно воспользоваться LBE Privacy Guard или поставить XPosed + XPrivacy.
        Оба способа более-менее работают, во втором — больше возможностей и геморроя.


  1. zaro000
    14.11.2017 20:06

    Собираюсь написать письмо в Европарламент, с предложением запретить Google и другим рекламным компаниям использовать вычислительные мощности и накопители компьютеров (стационарных и мобильных, включая смартфоны) для сбора, хранения и передачи информации, для начала, о предпочтениях пользователей. Мотив такой, что во-первых, человек приобретая смартфон не приобретает обязательства предоставлять свои мощности для сторонних вычислений, в противном случае это должно оплачиваться компанией, а во-вторых можно надавить на экологический аспект, мол это не экологично тратить столько энергии и евро. Просто я не понимаю, зачем, когда я покупаю себе смартфон, там установлен маркет, сервисы гугл, карты, почтовый сервис и обязательно требуется создавать аккаунт на гугле, это очень не удобно, вынужден выбирать себе смартфоны из совместимых и поддерживаемых проектами, где гугл апсов нет в прошивке.


    1. zaro000
      14.11.2017 20:31

      Не, ну действительно, я покупаю телефон, а не рекламный билборд себе в карман за свои же деньги. Зачем мне на нем гугл маркет, зачем мне отправлять тут же какую-то информацию в гугл? Хочешь, что бы я смотрел рекламу и выступал тестером их ПО — плати деньги гугол. Каждый тактовый сигнал процессора оплачивается из кармана пользователя, каждое обращение к памяти стоит денег, который уже итак заплатил за устройство и ПО деньги.


      1. Alex_ME
        14.11.2017 20:54

        Я тоже не люблю рекламу, передачу каких-то данных и кучу фоновых сервисов, которые тормозят мой, и без того слабый, смартфон.


        Но пользователи пользуются различными сервисами Google — поиском, картами, почтой, голосовым поиском, которые затрачивают ресурсы Google, и при этом пользователи за них не платят явно.


        1. redmanmale
          14.11.2017 21:51

          пользователи пользуются различными сервисами Google

          Вот и пусть с ними Google разбирается. А тех, кто не пользуется, это не должно касаться.


      1. ploop
        14.11.2017 21:14

        Зачем мне на нем гугл маркет

        Не покупайте. Покупаете — значит соглашаетесь.
        Купите китайца, накатите кастомную прошивку, напишите своё ПО… В чём проблема?


      1. kozhevnikovv
        14.11.2017 21:55

        В отличии от своих главных конкурентов, андроид это открытая система и у пользователя есть полная свобода выбора — при должном упорстве хоть из исходников собирай себе систему. Вы лукавите — у вас огромный выбор устройств с разным набором железа и софта.

        > плати деньги гугол
        вам и «платят» предоставляя бесплатно сервисы почты, карт, синхронизации, etc.


        1. zaro000
          14.11.2017 22:08

          Я ими не пользуюсь от слова совсем, но у меня смартфон Нексус 5X, брал только потому что они кастомизируются сообществом очень активно. Вот такой вот парадокс, больше никаких преимуществ нет. Просто я не понимаю, почему не продают смартфоны без гапсов и прочего, кому нужен только смартфон или даже просто телефон с камерой, с возможностью каким-нибудь простым способом установить весь вендорский контент кому это необходимо, либо с возможностью легко очистить прошивку для тех, кому совсем не нужно, если сделать скидку гуглу и вендорам.


          1. kozhevnikovv
            14.11.2017 22:16

            Так а в чем тогда претензия? Накатывайте циаген без гуглоприложений, корпорация добра не принуждает никого пользоваться своей инфраструктурой. Я фанат экосистемы гугла, позвольте мне делать свой выбор.


            1. DrZlodberg
              15.11.2017 08:59

              Вот только циан есть на дай бог 1% от всех телефонов (подозреваю — это сильно оптимистичный взгляд). Т.е. покупай ещё и телефон, который ему подходит. Но не подходит мне. Такие вот пироги.

              На самом деле весь (почти) гуглмусор можно снести и из обычного телефона (потратив некоторое время после каждого большого обновления), Но вот переключения треков кнопкой громкости, так радовавшее на циане, в нём завести так и не удалось. Хочется мучительно убить каждого, кто считает, что лучше меня знает, что мне удобно делать со своей вещью. А тем более — что мне НЕЛЬЗЯ делать со своей вещью.


          1. asmrnv777
            15.11.2017 00:48

            Просто я не понимаю, почему не продают смартфоны без гапсов и прочего, кому нужен только смартфон или даже просто телефон с камерой, с возможностью каким-нибудь простым способом установить весь вендорский контент кому это необходимо, либо с возможностью легко очистить прошивку для тех, кому совсем не нужно, если сделать скидку гуглу и вендорам.


            Потому что это нужно тысяче-другой пользователей, а гаппсы нужны большинству. Соответственно, логично будет создать неудобства для тысячи юзеров, а не для сотен миллионов.


        1. KOLANICH
          14.11.2017 22:37

          Никакая она не открытая — без проприетарных блобов от копирастов большинство устройств не заработает. А ещё из-за этих блобов нельзя обновить ядро. Из-за этих блобов на legacy устройствах не будет новой версии андроида, а будет только старая и уязвимая. Спасибо копирастам и Лиайнусу и потреб****м, регулярно покупающим новые телефоны, за всё это. Пока большинство устройств не будут полнофункциональны на свободных драйверах (в случае отсутствия свободного драйвера считаем, что свободный драйвер — пустой файл), платформу нельзя назвать открытой.


          1. kozhevnikovv
            14.11.2017 22:40

            Давайте отделим котлеты от мух. Гугл вам открыл операционную систему. Вы можете требовать открытия блобов от производителей устройств — голосуйте рублем. Пока что большинство голосуют против вас.


            1. RedCatX
              15.11.2017 01:26

              Проблема в том, что смартфонов без блобов вообще не существует, а значит голосовать рублём тоже довольно проблематично…


          1. quwy
            15.11.2017 03:52

            Хм, вот интересно, у меня в семерке работают некоторые драйвера от XP. И это не нонсенс, а вполне закономерная ситуация. И пофиг, что ядро сменилось уже раз десять, а драйвера при этом — те же блобы.

            Не выпендривались бы, сделали наконец бинарную совместимость, и прблема сразу стала бы на порядок менее актуальной. Но нет же, швабодка, блин, опасносте.


            1. DaemonGloom
              15.11.2017 14:02

              Проблема в том, что «некоторые». Их, на самом деле, очень мало таких. Большинство тех, что работают и на старых ОС, и на новых — были написаны после внедрения новой модели драйверов (после выхода Vista). При этом всё, что является действительно системным — даже в пределах разных сервис-паков одной ОС может не работать легко.


      1. alsii
        15.11.2017 18:08

        Я вот тоже самое про телевизор думаю… Может добавите в свое обращение и про телерекламу?


    1. Honeyman
      15.11.2017 02:39

      «Запретить использовать вычислительные мощности для сбора, хранения и передачи информации о предпочтениях пользователей».

      А что, интересная идея.

      Только попробуйте сначала на себе, пожалуйста. Проверить этот сценарий на удобство достаточно легко — просто каждый раз, когда берёте телефон, чтобы что-нибудь сделать, выполняйте перед тем, что планировали, factory reset.


    1. DjOnline
      15.11.2017 11:08

      Хорошая шиза.
      Не нравится — не покупай.


    1. chesterset
      15.11.2017 11:17

      А Гугл тут причем? Он вам телефон продал что ли? Производитель смартфона решил, что на свой аппарат он хочет накатить android с сервисами Гугл, заключил с Гугл док, предустановил все и продает вам конечное изделие. Вы вправе не покупать его, а производитель вправе не подстраивать свой массовый товар под вас и все довольны.


    1. Retifff
      15.11.2017 13:47

      и обязательно требуется создавать аккаунт на гугле
      Не создавайте, никто не заставляет. Устанавливайте программы из .apk.


    1. darthmaul
      15.11.2017 17:53

      Ведроид же бесплатный, поэтому какие могут быть претензии? А вендор смартов


    1. wickated
      16.11.2017 09:26

      Скачиваете себе АОСП андроид без сервисов гугла, пишете себе драйвера под свое оборудование, пользуетесь. Проблемы с чем-то? Тогда оплачивайте готовые изделия.


  1. konst90
    14.11.2017 20:08

    Если из читалки пропадет перелистывание страниц клавишами громкости — будет печально.


    1. Sdima1357
      14.11.2017 21:01
      +1

      и кнопки на пульте от андроид tv-box переназначать не получится :(
      API на кнопки все равно нужен. Возможно гуглу стоит лучше проверять приложения, прежде чем их подписывать


      1. DrZlodberg
        15.11.2017 09:09

        Для меня вообще загадка, почему программа, выводящая звук не может штатно работать с кнопками громкости. Я могу ещё понять полный системный перехват, но тут то почему?


        1. Levhav
          16.11.2017 02:23

          А для меня загадка зачем вообще этот вопрос контролировать. Если приложение плохое его пользователь может удалить. Если не удалил то значит оно ему нужно без каких либо средств контроля со стороны гугла.


          1. DrZlodberg
            16.11.2017 08:23

            В комментариях уже приводили примеры. Это могут быть и два хороших, перехватывающих одну и ту же клавишу. И мешающих друг другу. Просто нужно корректно разрешать такие ситуации, а не тупо всё запрещать.


    1. OKyJIucT
      14.11.2017 22:28

      Можно же просто отключить обновления и пользоваться старой версией приложения, где этот функционал доступен.


    1. Lertmind
      14.11.2017 23:31

      Вообще-то, в нормальных читалках (EBookDroid, Cool Reader и т. д.) не используется этот API, так как в любом приложении можно обрабатывать нажатия клавиш громкости без запроса специальных разрешений (KeyEvent). Если вас сбило упоминание gReader, то оно вероятно делает что-то хитрое.


    1. k12th
      15.11.2017 12:02

      Интересно, что в читалке от Google Play Books тоже работает перелистывание громкостью. Интересно, это через a11y API сделано или все-таки есть штатный способ?



  1. Zombieff
    14.11.2017 20:27

    Прочитав заголовок, в первую очередь думаешь: «Опять пользователей ущемляют по каким-нибудь дурацким причинам!»


    А на деле — инициатива оправданная. Помимо того, что это можно использовать во вред (см. первый коммент под статьёй тут), можно нарушить работу других сервисов, которые нужны для accessibility. Например, если аппаратные кнопки заменяют кому-то стандартные действия на экране, а приложение их перехватывает — можно вообще оказаться в полной… кхм… филейной части.


    Не знаю, насколько актуально именно для этой клавиши, но из-за повреждённого экрана знакомой включил на её телефоне завершение звонка по кнопке питания. Если бы вместо этого использовалась клавиша громкости, например (как для снимков в приложении камеры), то тут точно бы оно сломалось многими приложениями.


    Кстати говоря, что насчёт снимков клавишей громкости? У самого гугла это стандартная фича, если не ошибаюсь.


    1. BeppeGrillo
      14.11.2017 20:40

      Да, а ничо что приложение надо добавлять в accessibility ручками чтобы оно заработало?


    1. DrZlodberg
      15.11.2017 09:12

      А не судьба просто запрещать СОВМЕСТНЫЙ перехват кнопок? Какая может быть проблема, если они перехватываются только одной программой? А если появляется второй желающий — просить явно выбрать того, кому можно. Но нет, давайте просто запретим…


  1. 0o0
    14.11.2017 23:42

    У меня четверть программ с рут доступом, так что не испугать какими-то там «рисовать поверх окон». Но вообще странно, зачем алиекспрессу или фаерфоксу к примеру эти права. Не припомню, что бы они что-то поверх других приложений рисовали.


    1. Lertmind
      15.11.2017 00:40

      Firefox использует SYSTEM_ALERT_WINDOW здесь, читайте комментарий перед классом.


  1. Mr4Mike4
    15.11.2017 05:53

    Не понятно, что в итоге делать. Моё приложение тоже использует функции для инвалидов: на android < 4.4 считывает уведомления и отправляет их на комп. Получается теперь придётся отказываться от поддержки старых версий системы.


  1. OlegYch_real
    15.11.2017 05:53

    думаю этот апи и так сделан абы было, и гуглу глубоко фиолетово будет его кто-то использовать или нет
    а вот если действительно появится вредоносная программа, то пиар будет не самым лучшим, поэтому в перспективе его просто выпилят
    такая вот открытая система


  1. Dmitry_7
    15.11.2017 09:03

    Может, гуглу выпустить специальную версию для инвалидов?


  1. burbilog
    15.11.2017 12:02

    Блин. Только появилась (благодаря именно этому API) НУЖНЕЙШАЯ утилита, позволяющая листать кнопками громкости везде, а не в редких (и не тех, что нужно) приложениях, как тут же выпиливают :(

    Такое ощущение, что фичу листания кнопками маркетолухи гугла специально придерживают на черный день, чтобы было что с помпой показать, если дела плохо пойдут…


    1. faiwer
      15.11.2017 13:25

      Только появилась … как тут же выпиливают

      Не думаю, что отсутствие приложения в GooglePlay должно являть для вас вселенскую проблему. Скорее всего авторы выложат (или уже) его куда бы то ни было ещё. Когда нужное приложение по тем или иным соображениям не попадает в GooglePlay — рядовое явление.


      1. burbilog
        15.11.2017 14:39

        Не думаю, что отсутствие приложения в GooglePlay должно являть для вас вселенскую проблему.

        Мне — нет. Но вот сейчас я могу объяснить человеку по телефону, как эту штуку поставить. А если выпилят из маркета, то даже не буду пытаться. Я понимаю, что с точки зрения некоторых люди-неспециалисты вообще не люди и должны страдать, но, на мой взгляд, это поганая точка зрения.

        И сдается мне, что следующим шагом по выпилу будет выдача этого API по персональному разрешению от гугла, разумеется, во имя добра и света. А вы продолжите говорить «да ну, не проблема». Ну да, если рутануть, не проблема. Следующая итерация…


    1. alix_ginger
      15.11.2017 13:43

      Если есть люди, которым неудобно листать скроллом по экрану, то наверное, это приложение использует API добросовестно


    1. DaemonGloom
      15.11.2017 14:11

      А как вы в таком случае регулируете громкость?
      Ну и если у вас есть рут — всегда можно переназначить кнопки. И вместо действий VOLUME_UP/VOLUME_DOWN повесить туда PAGE_UP/PAGE_DOWN. Более подробная информация — source.android.com/devices/input/key-layout-files


      1. burbilog
        15.11.2017 14:30

        А как вы в таком случае регулируете громкость?

        Там можно задать, в какой программе громкость, а в какой программе скрол. И это ОЧЕНЬ удобно, т.к. скролл нужен в конкретных программах. Скажем, та же Опера не поддерживает скролл кнопками и без кнопок читать длинные тексты в ней дьявольски неудобно, а единственная альтернатива ей, умеющая так же хорошо масштабировать любой блок текста на странице под ширину экрана — это UC Browser. В котором есть свой скролл, но к нему последнее время прилагается тонна уродской рекламы и дикие тормоза всего телефона, с большим облегчением снес его. Даже Greenify не помогал.
        Ну и если у вас есть рут — всегда можно переназначить кнопки. И вместо действий VOLUME_UP/VOLUME_DOWN повесить туда PAGE_UP/PAGE_DOWN.

        А это, увы, не годится, ибо убивает возможность регулировать громкость там, где надо. Этим я баловался еще на 2.x андроидах. Неудобно.


    1. ed007
      15.11.2017 21:22

      Что-то не найти! Есть целый комбайн по переназначениям, но действия скролл там не вижу.


      1. burbilog
        16.11.2017 01:18

        Что-то не найти! Есть целый комбайн по переназначениям, но действия скролл там не вижу.

        В маркете, Volkey Scroll называется. Можно поискать com.tafayor.vkscroll


  1. zaro000
    15.11.2017 13:17

    Кстати, когда бегаешь с смартфоном очень не удобно залитый потом экран отрабатывает касания. Удобнее кнопками.


  1. ReakTiVe-007
    15.11.2017 20:37

    а не проще было все перевести на пользователя, мол смотрите сами, если доверяете приложению и разрабу, разрешайте пользоваться инвалидо-апи, а если вас обманули и что то украли, то сам дурак. Как уже упомянули выше с версии ведра 6.0 и выше(или я шо та напутал) можно отключать нужные разрешения в нужных приложениях.


  1. wickated
    16.11.2017 09:39

    В миуи по дефолту запрешен показ оверлеев. И это на уровне оболочки, версия андроида не влияет. Т.е. Гугл сам может сделать разрешение для данной функции "видимым", но не хочет пока что.