Próbuję wywołać niektóre javascript
funkcje znajdujące się na html
stronie działającej w pliku android webview
. Całkiem proste, co kod próbuje zrobić poniżej - z aplikacji na Androida wywołaj javascript
funkcję z komunikatem testowym, który wywołuje z powrotem funkcję java w aplikacji na Androida, która wyświetla wiadomość testową za pośrednictwem toast.
Te javascript
spojrzenia działać jak:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
Z WebView próbowałem wywołać javascript
następujące sposoby bez powodzenia:
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
I nie pozwalają javascript
naWebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
I oto Java
klasa
public class JSInterface{
private WebView mAppView;
public JSInterface (WebView appView) {
this.mAppView = appView;
}
public void doEchoTest(String echo){
Toast toast = Toast.makeText(mAppView.getContext(), echo, Toast.LENGTH_SHORT);
toast.show();
}
}
Spędziłem dużo czasu, szukając w Google, co robię źle. Wszystkie znalezione przykłady wykorzystują to podejście. Czy ktoś widzi tutaj coś nie tak?
Edycja: istnieje kilka innych javascript
plików zewnętrznych , do których się odwołuje i które są używane w html
, czy to może być problem?
@JavascriptInterface
dekoratora w metodach Java, które chcesz udostępnić WebView poprzez interfejs JavaScript.
myWebView.loadUrl("javascript:testEcho('Hello World!')");
rozumiem, że już załączyłeś plik HTML do tego widoku. Czy możesz mi powiedzieć, jak to zrobiłeś?