Как Lastpass знает текущий URL в Chrome

При просмотре в Chrome для Android Lastpass предлагает всплывающие подсказки, если он распознает URL-адрес как тот, с которым вы связали данные для входа.

Как он узнает, какой URL-адрес просматривает Chrome? Я знаю, что Lastpass использует службы специальных возможностей, но мне интересно, как он запрашивает текущий URL-адрес из Chrome.

PS. По-видимому, он работает только для Chrome (например, он не появляется в Opera), так что это может быть что-то специфичное для Chrome.


person marlar    schedule 28.12.2016    source источник


Ответы (2)


LastPass на Android запрашивает доступ к специальным возможностям с canRetrieveWindowContent true. Это позволяет ему проходить текущую иерархию представлений и получать доступ к представлениям как к объектам AccessibilityNodeInfo.

API специальных возможностей позволяет вам искать узлы по тексту, отображаемому в представлении, а также дает вам имя класса Java для каждого такого представления. AccessibilityNodeInfo#findAccessibilityNodeInfosByText

Эта функция не работает в Opera, вероятно, потому, что разработчики никогда не обрабатывали для нее логику обхода иерархии представлений.

Ознакомьтесь с https://developer.android.com/guide/topics/ui/accessibility/services.html

person Vibin    schedule 27.01.2017

Я обычно использую javascript, помимо функциональности Andoid, и с некоторым взломом можно получить ссылки на все открытые окна (и, например, получить их URL). См. этот ответ от 2009 года.

person Gérard Binkhorst    schedule 30.01.2017
comment
Это вопрос о том, как другое приложение (например, Lastpass) может узнать текущий URL-адрес в другом приложении (например, Chrome). Вы не можете сделать это с помощью javascript. - person marlar; 30.01.2017