Как некоторые приложения записывают все, что мы печатаем в Android?

Некоторые приложения, такие как Type Machine, утверждают, что могут записывать все, что вы печатаете. Вы должны установить его и активировать из настроек специальных возможностей устройства, тогда он может как-то записывать набранный текст.

Как это вообще возможно? Это не приложение для клавиатуры, поэтому оно не имеет прямого доступа к информации о нажатиях клавиш. Кроме того, согласно документации Android «Только системе разрешен прямой доступ к InputMethodинтерфейсу IME» и «Только активный клиент InputConnectionбудет принимать операции».

Учитывая, что сторонняя служба, такая как Type machine, не является ни системным приложением, ни активным клиентом, как она может записывать введенную информацию?

Ответы (2)

Он устанавливает службу специальных возможностей . Эти сервисы обычно используются для чтения с экрана (например, TalkBack ) и, таким образом, имеют доступ к тексту на экране. Таким образом, он может записывать информацию на экране. Если вы установите приложение, вы заметите, что оно предлагает вам зарегистрировать его в качестве службы специальных возможностей, чтобы собирать входную информацию.

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

Насколько я знаю, ни одно стороннее приложение не может записывать ваши «нажатия клавиш», если оно установлено на телефоне Android без рута. Когда приложение получает привилегию и получает root-доступ, только тогда оно может действовать как системное приложение на телефоне с root-доступом. Вот почему Google никогда не предоставлял root-доступ пользователям. Это слишком рискованно. Любой может установить шпионское приложение «кейлоггер» на ваш нерутированный телефон и воспользоваться им.

Я вижу много мнений здесь. Вопрос нужно решить технически, объяснив, на что способны настройки специальных возможностей, какие разрушительные вещи могут делать приложения, используя их, если это возможно. Тогда вам, возможно, придется иметь дело с заявлением OP о документации Android относительно InputMethodинтерфейса IME.
Спасибо за ответ, я хотел бы получить еще несколько технических подробностей о том, как именно приложение может получить доступ к нажатиям клавиш, например, через какой API, класс и т. д.