2014-07-15 9 views
6

Ich möchte eine AccessibilityService schreiben, die dem Benutzer helfen soll, Formulare zu füllen. Ich sah die Möglichkeit, Javascript-Code über WebView.loadUrl() aufzurufen. Aber da ich nur die AccessibilityNodeInfo habe, sehe ich nur, dass die WebView auf dem Bildschirm ist.Führen Sie Javascript in Chrome von AccessibilityService

Nach einigen Nachforschungen habe ich gesehen, dass TalkBackService in der Lage ist, Javascript zu injizieren, und in einem anderen Beitrag (Alternative way for communication between WebView and native) sah ich es möglich, wenn ich einen Verweis auf das WebView-Objekt habe.

Gibt es eine Möglichkeit, JavaScript über eine solche Message oder eine Broadcast Intent in Chrome WebView auszuführen?

Wäre wirklich toll wenn mir jemand helfen könnte! Vielen Dank!

+0

Hallo Lee, ich habe das gleiche Problem mit dem Ausfüllen von Benutzername und Passwort von meinem AccessibilitService. Ich konnte keinen Weg finden, wie ich mit AccessibilityInfo ein Javascript einfügen kann. Können Sie mir bitte sagen, wie Sie es geschafft haben? Vielen Dank. – androidGuy

+0

Hallo Lee, kannst du mir bitte sagen, wie bekomme ich die geladene URL von diesem Webview mit Accessibility Service? –

Antwort

1

Chrome verwendet kein WebView, Chrome verwendet eine eigene Rendering-Engine. Während ein Teil des Codes mit dem WebView geteilt wird (da die beiden am Ende aus demselben Quellcode kompiliert werden), endet die Ähnlichkeit.

Ich glaube nicht, dass es eine Möglichkeit gibt, JavaScript über eine Absicht in Chrome zu injizieren - das wäre ein ziemlich großes Sicherheitsloch (sonst könnte jemand ein "sende mir dein Geld" JavaScript in die Bankseite).

Barrierefreiheit ist nicht mein Spezialgebiet, daher kann ich hier völlig weg sein, aber ich glaube, dass neuere Versionen von Chrome die Web-Inhaltsstruktur der Barrierefreiheitsebene zugänglich machen und Sie daher in der Lage sein sollten, Ihr eigenes JavaScript zu verwenden. Ich denke, Sie können dies mit dem uiautomatorviewer überprüfen: Für mich zeigt das Tool HTML-Formulare an, wenn ich einen Auszug aus der Benutzeroberfläche von Chrome erhalte. Ist das nicht der Fall für dich?

+0

Hallo! danke für die Antwort. Ich weiß, Chrome verwendet den 'ContentViewCore' [1], aber diese Klasse hat auch die Methode' loadUrl() '. :) Ich weiß, das wäre ein Sicherheits-Ganzes, aber LastPass [2] hat es geschafft, Javascript auf der aktuell geöffneten Website laufen zu lassen. Danke für den Tipp mit uiautomatorviewer, ich werde es überprüfen. Prost [1] http://src.chromium.org/svn/trunk/src/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java [2] https://helpdesk.lastpass.com/upgrading-to-premium/lastpass-for-android/ – lhlmgr

+0

@ lee.O - eigentlich behandelt ContentViewCore.loadUrl javascript: URLs auf eine etwas andere Weise als die Webansicht, aber das ist eine andere Diskussion. Ich wäre überrascht, wenn lastpass Javascript injizieren würde. –

+0

@ Marcin-Koshiba, ouh sry, ich habe gerade das Chrom-Repository überprüft. Ich überprüfte die Chrom-Javascript-Konsolenausgabe auf dem mobilen Gerät und sah den Code, den sie ausführen. (javascript: function() ...) – lhlmgr

Verwandte Themen