Letysite.ru

IT Новости с интернет пространства
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

System accessibility service

Годовая
подписка
на
Хакер

Xakep #251. Укрепляем VeraCrypt

Xakep #250. Погружение в AD

Xakep #248. Checkm8

Xakep #247. Мобильная антислежка

Автоматизируем работу с программами на Android при помощи Accessibility Service

Содержание статьи

Понажимай эти кнопки за меня

Еще в XIX веке Гегель сказал: «Машиноподобный труд нужно отдать машинам». И тут с одним из творцов немецкой классической философии трудно поспорить: вряд ли Георг Вильгельм Фридрих отказался бы от автоматизации таких действий, как отключение звука и нажатие кнопки «Пропустить рекламу» при просмотре ролика в YouTube или получение ежедневных бонусов за посещение приложения. Тем более что для всего этого у нас уже есть готовый инструментарий!

Как мы говорили в предыдущей статье, Accessibility Service может получать события, происходящие на экране, но он же может и вызывать их. Например, находить нужные элементы в приложении и кликать по ним.

Ставить чужое приложение с подобной функциональностью опасно — все мы знаем репутацию Google Play и примерно представляем себе, что такое приложение может сделать с твоим банковским клиентом на телефоне. Поэтому выхода два: либо декомпилировать чужое ПО и смотреть, куда именно оно нажимает, либо пилить свое, строго под поставленные задачи.

Для исследовательских целей я создал приложение, которое будет само в себя кликать из собственного сервиса :).

Подготовка к работе сервиса

Чтобы наш сервис начал работу, ему нужно предоставить права в специальном разделе настроек. Как перенаправить туда пользователя, ты уже знаешь из первой статьи. Дополнительно мы сами можем перепроверить, есть ли эти права у приложения.

Здесь accessibilityservice_id — это строка вида «имя пакета/.сервис», у нас это ru.androidtools.selfclicker/.ClickService.

Вот описание сервиса из манифеста:

Параметр label отвечает за название приложения в настройках сервиса спецвозможностей. В разделе meta-data задается указание на описание нужных функций для работы сервиса. Вот файл serviceconfig:

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

Полное описание этих параметров, как всегда, есть в документации.

checkAccess() вернул false!

Xakep #251. Укрепляем VeraCrypt

Жизненным циклом сервиса управляет система. Сами остановить сервис мы не можем. ОС самостоятельно выгрузит ненужные сервисы — к примеру, зачем крутить сервис для приложения, которое не запущено?

Мы можем привязать сервис к строго нужному приложению. Как только мы дали разрешение на работу, у сервиса вызовется метод onServiceConnected. У него мы должны вызвать метод setServiceInfo() с параметром AccessibilityServiceInfo. За фильтрацию приложений, с которыми работает сервис, отвечает строковый массив packageNames.

Да, он точно будет

Работаем с событиями AccessibilityEvent

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

Для запуска приложения с чистого листа используем флаг Intent.FLAG_ACTIVITY_CLEAR_TOP. В противном случае приложение может вернуться на экран со старым состоянием, очень далеким от стартового экрана.

Теперь нужно обрабатывать события в методе onAccessibilityEvent. У события есть тип, он поможет определить, что произошло (например, сменилось окно, кликнули по элементу, элемент получил фокус). Чтобы получить источник события AccessibilityNodeInfo, надо у объекта события вызвать метод getSource().

Источник имеет много полезных свойств, помогающих в работе: текст, ID, имя класса. У него могут быть родительский и дочерние элементы.

Он может быть кликабельным isClickable(), и, чтобы щелкнуть по нему, как нормальный пользователь, нужно вызвать метод performAction(AccessibilityNodeInfo.ACTION_CLICK).

Если мы хотим более глобальных действий, например нажать клавишу «Назад» на устройстве, то следует вызвать метод performGlobalAction() с нужным параметром.

Чтобы найти на экране требующуюся AccessibilityNodeInfo, мы можем вызвать один из методов: поиск по ID (findAccessibilityNodeInfosByViewId) и поиск по тексту (findAccessibilityNodeInfosByText). Будь готов к тому, что он вернет нам массив элементов или вообще ни одного.

Потренируемся на кошках, точнее — на окошках

Вот разметка нашего подопытного экрана:

У некоторых элементов есть ID и текст, у других только текст, некоторые некликабельны.

Иногда обработчики кликов устанавливают на области, превышающие своими размерами элемент с текстом или картинкой.

Поизучаем эту задачу с помощью метода debugClick.

Вот что вышло в лог:

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

Для нажатий на первые две кнопки можно использовать findAccessibilityNodeInfosByText и findAccessibilityNodeInfosByViewId. Если текст у элементов повторяется, дополнительно можно проверять на ClassName или родителя.

Чтобы кликнуть в наш LinearLayout, нужно получить его AccessibilityNodeInfo, ID у него нет, но есть дочерние элементы TextView и Button, у которых есть текст.

Для начала нам нужно получить один из них, а потом кликнуть в его родителя.

Бывают и обратные ситуации, когда есть родитель, а кликаем мы в дочерние. Для этого используй nodeInfo.getChildCount() и обращайся к элементу в цикле по ID nodeInfo.getChild(id) (если не ошибаюсь, нумерация ID идет с нуля).

Начинать работу сервиса лучше с события смены окна:

Если весь алгоритм действий уже готов, то можно запускать сервис автоматически через AlarmManager, например раз в сутки.

Отменить запуск можно вот так:

Заключение

Класс AccessibilityService позволит избавиться от рутинных операций на твоем Android-устройстве. Его возможностей достаточно, чтобы реализовать почти любую задачу, главное — дать разрешения и найти кликабельный элемент на экране.

Android Accessibility Suite: что это за программа

На каждом смартфоне имеются приложения, предустановленные производителем по умолчанию. Чаще всего это сервисы Google и фирменные софт разработчика. Понять предназначение конкретной утилиты бывает сложно, поэтому пользователи обращаются за помощью в Интернет. Давайте разберемся, для чего нужна программа Android Accessibility Suite, а также как она настраивается и удаляется.

Что такое Android Accessibility Suite

Android Accessibility Suite – официальное приложение от Google, представляющее собой инструмент для людей с ограниченными возможностями. До недавнего обновления программа называлась TalkBack и выполняла аналогичную функцию. Через настройки утилиты можно включить голосовое дублирование всех действий на экране, активировать упрощенную систему управления смартфоном и добавить голосовые команды. Сервис полностью бесплатный и доступен для скачивания в Google Play.

Для чего нужен Android Accessibility Suite

Возможности программы действительно впечатляют, поэтому рекомендуем ознакомиться с ее основными функциями:

  • Чтение с экрана. Режим предназначен для людей с плохим зрением. Голосовой ассистент дублирует весь текст, написанные на дисплее.
  • Изменение размера экрана. В настройках приложения можно указать оптимальный масштаб дисплея для конкретного человека.
  • Увеличение объектов. Возможность изменить размер любой части интерфейса системы, включая иконки приложений.
  • Яркость и контрастность. Выбор оптимальной яркости экрана для человека.
  • Переключение доступа. Возможность управлять смартфоном с клавиатуры или приставки.
  • Голосовой диспетчер. Функция, позволяющая узнать название предмета с помощью камеры.

На этом возможности Android Accessibility Suite не заканчиваются, поэтому при желании можно установить программу и разобраться самостоятельно.

Как удалить или отключить Android Accessibility Suite

Отключить программу Android Accessibility Suite возможно через настройки смартфона. Чтобы не допустить ошибок – воспользуйтесь пошаговой инструкцией:

  1. Переходим в раздел «Все приложения» или «Все программы».
  2. Находим программу «Android Accessibility Suite». Для удобства советуем воспользоваться поисковой строкой.
  3. Открываем страницу с приложением и нажимаем по кнопке «Отключить».
Читать еще:  Очистить базу access

Если нужная кнопка отсутствует, то значит софт является системным и не подлежит остановке. Единственный вариант – удаление программы. До недавнего времени для этого нужно было иметь на телефоне root-права, но сейчас достаточно компьютера и утилиты ADB Run. Первым делом активируем в настройках смартфона откладку по USB:

  1. Переходим в раздел «О телефоне» или «Об устройстве».
  2. Несколько раз нажимаем по строке «Версия прошивки». В конце на дисплее должно появиться сообщение с текстом «Вы стали разработчиком».
  3. Затем открываем вкладку «Расширенные настройки».
  4. Заходим в раздел «Для разработчиков».
  5. Перемещаем галочку вправо возле строки «Откладка по USB».

Теперь подключаем телефон к компьютеру через USB-кабель. Обратите внимание, что на ПК должны быть установлены драйвера для конкретной модели устройства. На Windows 10 это делается автоматически, а на более ранних версиях операционной системы выполняется ручная инсталляция. Также в панели уведомлений телефона выберите режим «Передача файлов». Открываем программу ADB Run и вводим команду с кодом «12». Нажимаем «Enter».

На следующем этапе вводим команду «7» и нажимаем «Enter».

Теперь заходим в настройки телефона и просматриваем имя пакета приложения. На смартфоне Xiaomi это делается через нажатие по значку «!». Зачастую название пакета Android Accessibility Suite такое: com.google.android.marvin.talkback.

Вводим данную информацию в программу и нажимаем «Enter».

При успешном выполнении процедуры в рабочей области ADB Run появится сообщение «Success». После деинсталляции выберите параметр «Безопасное извлечение устройства», и перезагрузите смартфон. Удаление сервиса Android Accessibility Suite положительно отразится на скорости работы телефона.

Подводя итоги отметим, что программа Android Accessibility Suite будет по-настоящему полезна только людям с ограниченными возможностями. Среднестатистическому пользователю приложение никак не пригодится.

Android Accessibility Suite что это за программа и нужна ли она

В интернет магазине для устройств Android огромное количество приложений, которые создают и выкладывают, в том числе независимые разработчики. Пользователям попадается при поиске Android Accessibility Suite. Что это за программа и нужна ли она на вашем устройстве — об этом пойдет речь в статье далее.

Что нужно знать об Android Accessibility Suite?

Эта программа ранее называлась Talkback. Спустя несколько версий программы разработчики решили переименовать свой проект в Android Accessibility Suite — набор для доступа к Андроид. С её помощью люди с ограниченными возможностями смогут более просто использовать свои устройства. Приложение имеет гибкие настройки. Пользователи могут слышать голосовые оповещение о всех действиях, которые происходят на телефоне. Голосовые подсказки нужно активировать в настройках при помощи пункта TalkBack.

Программа позволяет добавлять любые языковые пакеты на движке Svox. После ребрендинга программы в функциональном плане почти ничего не поменялось. Известно, что это приложение TalkBack являлось только частью программы, поэтому было принято решение изменить название на более подходящее. В Accessibility Suite также есть еще один модуль — Switch Access. Он направлен на помощь людям с нарушенными функциями движения при помощи специального контроллера.

Возможности приложения

Получить на свой смартфон программу Android Accessibility Suite можно на странице магазина Play Маркет https://play.google.com/store/apps/details?id=com.google.android.marvin.talkback. После его установки вы сможете:

  • В меню приложения «Специальные возможности» настроить кнопки, жесты, навигацию, звуковые параметры и другое;

Приложение в Google Play

  • С помощью функции TalkBack есть возможность озвучивать пункты для перехода устройства, чтения текста, можно устанавливать вибрацию на нажатие определенных пунктов;
  • Можно также пользоваться функцией, которая позволяет озвучивать предметы, попавшие в объектив камеры устройства;
  • При помощи модуля Switch Access моно осуществлять управление гаджетом через клавиатуры или специального пульта;
  • Также можно озвучивать текст, который попал в поле зрения камеры смартфона;
  • В новой версии была добавлена возможность осуществлять определенные действия в то время, как происходит озвучивание. Для этого необходимо активировать пункт многозадачности через настройки программы.

    Настройки Accessibility Suite

    Нужна ли программа Android Accessibility Suite вам или вашим родственникам — решать вам. Но если вы или близкие имеют некоторые проблемы с доступом к мобильным устройствам, приложение все же необходимо протестировать. В первую очередь приложение может стать хорошим помощником для тех, у кого проблемы со зрением.

    Использование приложения Accessibility Suite

    После установки приложения Accessibility Suite можно открыть его настройки и найти там подробную инструкцию о том, как им пользоваться. Она очень подробная. Обычно вопросов после ознакомления с ней не возникает. Но все же мы рассмотрим здесь бегло основные нюансы в её использовании. Одним из неудобств по мнению пользователей является то, что при выборе пунктов или клавиш необходимо пользоваться двойным нажатием.

    • После нажатия на одно из установленных приложений на вашем смартфоне программа произнесет её название. Чтобы запустить выбранную программу, необходимо еще раз нажать на иконку;
    • При использовании клавиатуры, нажав на одну из клавиш, вы услышите слово, которое начинается с этой буквы. В настройках Accessibility Suite можно отключать или подключать эту функцию;
    • Чтобы включить в программе возможность чтения текста, необходимо встряхнуть устройство;
    • При первом использовании программы подключите наушники, чтобы настроить некоторые функции;
    • Чтобы активировать возможность запускать приложения двумя пальцами, выберите иконку приложения в меню и удерживайте. Программа автоматически активирует этот пункт, и вы в будущем сможете открывать программы на устройстве Android этим способом;
    • Для того, чтобы отключить модуль TalkBack (голосовые подсказки), необходимо открыть меню приложения и выбрать пункт «Приостановить отзывы». Подтвердите эти настройки и снимите флажок с пункта «Всегда отображать…», чтобы в следующий раз дополнительное окно подтверждения не появлялось.

    Как удалить приложение из Android

    Для того, чтобы удалить приложение Accessibility Suite из вашего устройства Android, необходимо открыть меню смартфона и нажать на иконку программы. Удерживайте её до тех пор, пока не появится корзина. Перенесите иконку туда и подтвердите удаление.

    Отзывы о приложении в Google Play

    Что это за программа Android Accessibility Suite на самом деле? В отзывах о приложении в Play Маркете можно найти возмущенные отзывы пользователей. Они заметили некоторые странности при удалении программы. Иногда оно самостоятельно повторно восстанавливается без ведома владельца устройства. В полезности программы Android Accessibility Suite сомневаться не приходится. Но устанавливать или нет, решает сам пользователь.

    Automating work with programs for Android using the Accessibility Service

    And programmers, and hackers, and security people sometimes need ways to automate user actions — that is, write scripts that will poke into the buttons of other people’s software so that they take it in clear coin. Who said «secretly automate the work with a mobile bank»? 🙂 Shame on you, comrade! We are for peaceful automation. Today we will teach Accessibility Service to do the job on the device for us!

    Push these buttons for me

    Back in the XIX century Hegel said: «Machine-like work should be given to machines.» And then with one of the creators of German classical philosophy is hard to argue: it’s unlikely that Georg Wilhelm Friedrich would refuse automation of actions such as mute sound and clicking the «Skip advertisement» button when watching a video on YouTube or receiving daily bonuses for visiting an application. Moreover, for all this we already have a ready-made toolkit!

    Читать еще:  Размер слайда в powerpoint в пикселях

    Accessibility Service can receive events that occur on the screen, but it can also call them. For example, find the desired items in the application and click on them.

    Putting someone else’s application with this kind of functionality is dangerous — we all know the reputation of Google Play and pretty much imagine what this application can do with your bank client on the phone. Therefore, there are two ways out: either decompile someone else’s software and look where it presses or to file its own, strictly under the tasks.

    For research purposes, I created an application that will itself click from its own service :).

    Preparation for service work

    In order for our service to start working, it must be granted rights in a special section of the settings. To do this, it is desirable to know how to redirect the user there. In addition, we can double-check whether these are the rights of the application.

    Here, accessibilityservice_id is a string of the form «package name/.service», we have it ru.androidtools.selfclicker/.ClickService.

    Here is the description of the service from the manifest:

    The label parameter is responsible for the name of the application in the settings of the special capabilities service. In the meta-data section, you specify the description of the required functions for the service. Here is the file serviceconfig:

    In it, we describe the powers of the service, the types of events that it can handle, and the activities that will be launched to configure the service.

    A full description of these parameters, as always, is in the documentation.

    The life cycle of the service is controlled by the system. We can not stop the service ourselves. The OS itself will unload unnecessary services — for example, why twist the service for an application that is not running?

    We can bind the service to a strictly needed application. Once we have given permission to work, the service calls the onServiceConnected method. We call it the setServiceInfo() method with the AccessibilityServiceInfo parameter. For filtering the applications with which the service operates, the string array packageNames answers.

    Working with AccessibilityEvent Events

    After distributing all the permissions, we need to launch the required application. If we know its package name, it’s not difficult:

    To start the application from scratch, use the Intent.FLAG_ACTIVITY_CLEAR_TOP flag. Otherwise, the application can return to the screen with an old state, very far from the start screen.

    Now you need to handle the events in the onAccessibilityEvent method. The event has a type, it will help to determine what happened (for example, the window was changed, the element was clicked on, the element received focus). To get the source of the AccessibilityNodeInfo event, you must call the getSource() method on the event object.

    The source has many useful properties that help in work: text, ID, class name. It can have parent and child elements.

    It can be clickable isClickable(), and to click on it as a normal user, you need to call the performAction method(AccessibilityNodeInfo.ACTION_CLICK).

    If we want more global actions, for example, to press the «Back» button on the device, then we call the performGlobalAction () method with the required parameter.

    To find the required AccessibilityNodeInfo on the screen, we can call one of the methods: search by ID (findAccessibilityNodeInfosByViewId) and search by text (findAccessibilityNodeInfosByText). Be prepared for the fact that he will return us an array of elements or none at all.

    We will practice on cats, more precisely — on the windows

    Here is the layout of our experimental screen:

    Some elements have ID and text, others only text, some are not clickable.

    Sometimes, click handlers are placed on areas that exceed the size of an element with text or a picture.

    Let’s study this task using the debugClick method.

    Here’s what happened in the log:

    To reproduce a sequence of clicks, you must first examine the elements that will be clicked. But sometimes it is also important to follow their clicks.

    For the first two buttons, you can use findAccessibilityNodeInfosByText and findAccessibilityNodeInfosByViewId. If the text of the elements is repeated, you can additionally check for ClassName or the parent.

    To click on our LinearLayout, you need to get its AccessibilityNodeInfo, it does not have an ID, but there are children of TextView and Button that have text.

    First, we need to get one of them, and then click on its parent.

    There are also reverse situations when there is a parent, and we click into the children. To do this, use nodeInfo.getChildCount() and refer to the element in the loop by ID nodeInfo.getChild(id) (if not mistaken, the ID numbering comes from zero).

    It is better to start the service operation from the window change event:

    If the whole algorithm of actions is already ready, then you can start the service automatically through AlarmManager, for example, once a day.

    To cancel start it is possible so:

    Conclusion

    The AccessibilityService class will get rid of routine operations on your Android device. Its capabilities are enough to realize almost any task, the main thing is to give permission and find a clickable element on the screen.

    Unusual ways of using Android accessibility services

    The accessibility service is a feature of the Android framework designed to provide user interface enhancements to assist users with disabilities, or those who may temporarily be unable to fully interact with a device. In these cases, people might need additional or alternative feedback such as text-to-speech or haptic feedback. The accessibility services run in the background and receive callbacks from the system when accessibility events fired. Such events denote some state transition in the user interface, for example, the focus has changed, a button has been clicked, etc. Such the service can optionally request the capability for querying the content of the active window.

    The accessibility services receive events from the system when UI of the active application is changed or user input appeared. Also they may retrieve content of the active window and perform actions on UI components.

    What can we do by accessibility services?

    Let’s check what the accessibility service is able to do with user interface.

    The service may react to a bunch of events. The AccessibilityEvent class represents a system event and contains contextual information about what happened in the user interface, including event type, source of event, event time, etc. For example, there are several very useful event types such as TYPE_VIEW_CLICKED , TYPE_WINDOW_STATE_CHANGED, TYPE_VIEW_TEXT_SELECTION_CHANGED and others. You can read more here.

    Читать еще:  Резервное копирование access

    The accessibility service configuration allows us to filter events by type and by application package. In other words, it is possible to receive all accessibility events from all applications or some specific events from specific applications.

    As far as interacting with the UI is concerned, you can interact with user interface in different ways. The accessibility service doesn’t use View class directly, but AccessibilityNodeInfo instead. This class allows you to click views (using ACTION_CLICK or ACTION_LONG_CLICK actions), scroll views (using ACTION_SCROLL_FORWARD and ACTION_SCROLL_BACKWARD actions) or make text selection operations (using actions like ACTION_SET_SELECTION , ACTION_COPY , ACTION_CUT , etc.). The whole list of actions is available in javadoc of the class.

    Also it is possible to get view-related information from AccessibilityNodeInfo such as isScrollable , isClickable , etc. Considering ability to retrieve then window content and performing gestures, the accessibility services seem to be quite a powerful tool.

    What can we use them for?

    As I mentioned, the accessibility service is designed to assist users with disabilities by providing additional feedback. But possible usage is not limited by these user interface enhancements. The accessibility service may be developed as part of a bigger application and used to communicate with other components like services or activities. Hence, we can use them for our own needs. Let me take a couple of examples.

    One of my previous projects was quite specific — an android application was part of big testing infrastructure developed for testing bluetooth connectivity of embedded software. The aim of the application was emulating user actions such as accept bluetooth pairing request, reject bluetooth pairing request, allow remote bluetooth device to access phonebook/messages, and so on. For these purposes, I used the accessibility service to perform actions with system dialogs.

    The second example of using accessibility services (you can find several suggestions at Stackoverflow) is obtaining response of USSD code by retrieving content of system dialog. These codes, also known as “quick codes”, are usually used for communicating with GSM operator. Often they look like *100# , *123# , etc. Here is a demo application I wrote for this post. Below I will describe development details.

    I created a list of possible usage scenarios:

    1. Automating/emulating user actions (may be used for testing purposes)

    • Accepting/rejection runtime permissions
    • Accepting/rejecting bluetooth pairing request
    • Answering/rejecting calls
    • Using as alternative to uiautomator/espresso (for system apps)

    2. Reacting to system events if there is no broadcast event for them

    • Receiving USSD code result
    • Appearance of applications dialog

    3. Retrieving information from UI elements of other application (including systems)

    • GoogleNow-on-tap like functionality (analysing textviews content of any app and making a google search)
    • Spy-ish software (looking for keywords in textviews)

    4. Dispatching gestures

    • Controlling other application by performing gestures (kind of user action emulation)

    5. Soft keyboard state listening and controlling

    • Gathering key pressing statistics

    As you can see, there are several ways of unusual usage of accessibility services. I wrote ‘unusual’ because all these scenarios are different from the original purpose of accessibility services. They are a bit tricky, but I believe we can use widely our own services as part of user interaction testing (together with espresso and uiautomator).

    Any restrictions?

    The accessibility service seems to be kind of security issue. But they are not. Firstly, because user must manually activate an accessibility service in the corresponding settings screen. Secondly, the services run in user space, not system space and not middleware. So, simple adb shell pm dump com.yourapp.package command will show all information about accessibility service, even classname. Moreover, to get content of some textview you should know its package, id and other information (the same as using uiautomator).

    Show me an example

    I won’t go into details of how to develop and configure accessibility services in general. You can find a good guide at android development documentation website (one, two). Instead, I will focus on approaches from the list above.

    The demo application allows user to add USSD code to the list, run it by clicking on list item and reach USSD code response, dismiss dialog and show response content within application. The application may be downloaded from play store and source code is available at github.

    This video shows how the application works:

    The accessibility service must be able to do the following:

    • Receive accessibility event when the dialog with USSD code response appears;
    • Retrieve content of the dialog (response of USSD code);
    • Dismiss dialog by clicking the OK button;

    So, firstly, we have to configure the accessibility service to receive events from the application which performs USSD codes (basically this is the application we use to make calls). Also we need to receive only events that represent the opening of dialogs. In order of do that we have to know package of phone application and corresponding accessibility event type. Second, to reach USSD response text we need to know id of dialog textview where response is shown. And finally we need to know id of OK button to emulate click to dismiss the dialog.

    There is uiautomatorviewerpackage of application and id of textview and button. Here is a good tutorial on how to use it.

    The configuration file of accessibility service looks like this:

    There are a couple of important lines in this configuration:

    • The android_packageNames=»com.android.phone» line tells the system that we are interested only in events from application with such package. On my Nexus 6 device this is Phone application made by Google. Other manufacturers (like Samsung, LG, etc) may change package of phone application.
    • The android_accessibilityEventTypes=»typeWindowStateChanged» line adds filtering of events by type. This event type represents changing state of the window, which means opening of dialogs, popups and so on.
    • The android_canRetrieveWindowContent=»true» line enables accessibility service to go through layout tree and get view-related information.

    Now, let’s implement the accessibility service itself. Below is a code snippet which contains overridden onAccessibilityEvent method of AccessibilityService class. It shows how to get text from textview and how to perform actions on button.

    Please, let me know if you use accessibility services in your apps and for what purpose. Also, add comments if you find another unusual scenarios of accessibility service usage.

  • Ссылка на основную публикацию
    Adblock
    detector