Я пытаюсь вызвать некоторые javascript
функции, находящиеся на странице html
, работающей внутри веб-просмотра Android
. Довольно просто то, что пытается сделать код ниже - из приложения для Android вызовите функцию javascript
с тестовым сообщением, которое, в свою очередь, вызовет функцию Java в приложении для Android, которая отображает тестовое сообщение в виде тоста.
Функция javascript
выглядит так:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
Из WebView я попытался вызвать javascript
следующими способами, но безуспешно:
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
Я включил javascript
в WebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
И вот Java
класс
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();
}
}
. Я потратил много времени на поиск в Google, чтобы увидеть, что я делаю неправильно. Все примеры, которые я нашел, используют этот подход. Кто-нибудь видит здесь что-то не так?
Изменить: Есть несколько других внешних javascript
файлов, на которые ссылаются и используются в html
, могут ли они быть проблемой?