Автозаполнение логинов в Chrome с помощью AccessibilityService Android

Я разрабатываю приложение, которое требует автоматического заполнения логинов в других установленных приложениях и chrome. Я могу успешно автоматически заполнять логины в других установленных приложениях с помощью AccessibilityService, но не могу заставить его работать в браузере Chrome. Я могу определить имя пользователя и пароль AccessibilityNodeInfo, но не могу вставить в него содержимое.

Вот как я пытаюсь: я копирую содержимое для заполнения в буфер обмена, а затем вставляю содержимое в эти поля имени пользователя и пароля, используя AccessibilityNodeInfo.ACTION_PASTE. Этот метод хорошо работает для других установленных приложений, но не вставляется в Chrome. Я не могу найти какие-либо соответствующие сообщения в Интернете, кроме этого - ссылка, но в ней нет однозначного решения. Также я не могу найти ничего задокументированного на сайте разработчика. Должен ли я вводить код javascript для вставки своего контента? Если да, то не могли бы вы привести пример? Раньше я делал это с помощью WebView, но в этом случае у меня нет ссылки на представление.

Любая помощь в этом будет принята с благодарностью.


person androidGuy    schedule 24.11.2014    source источник
comment
Я хочу создать службу специальных возможностей для автоматического заполнения входа в другое приложение. Можете ли вы предоставить мне несколько ссылок на примеры?   -  person Bunny    schedule 17.05.2016


Ответы (3)


Вы можете запустить javascript, чтобы выполнить это, выполнив что-то вроде следующего:

document.getElementById("username").val = "username";

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

person j_mcnally    schedule 03.12.2014

Ну гугл этого не позволяет

"Вы не можете использовать AccessibilityService для внедрения JavaScript"

"Мы не планируем поддерживать расширения javascript или любые другие методы внедрения javascript в Chrome или WebView."

Вы можете прочитать больше здесь...

person Murtaza Khursheed Hussain    schedule 03.12.2014

Вы можете использовать этот метод для выполнения автозаполнения:

private void setNodeText(AccessibilityNodeInfo node, String str) {
        Bundle bundle = new Bundle();
        bundle.putCharSequence(AccessibilityNodeInfo.ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE, str);
        node.performAction(AccessibilityNodeInfo.ACTION_SET_TEXT, bundle);
}
person Prasad Pawar    schedule 24.10.2015