Я пытаюсь вызвать некоторые javascriptфункции, сидя на htmlстранице, работающей внутри android webview. Довольно просто то, что код пытается сделать ниже - из приложения для Android, вызвать javascriptфункцию с тестовым сообщением, которое inturn вызывает функцию 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();
}
}
Я потратил много времени на поиски, чтобы понять, что я делаю не так. Все примеры, которые я нашел, используют этот подход. Кто-нибудь видит здесь что-то не так?
Изменить: Есть несколько других внешних javascriptфайлов, на которые ссылаются и используются в html, могут ли они быть проблемой?
@JavascriptInterfaceдекоратор в методах Java, которые вы хотите сделать доступными для WebView через интерфейс JavaScript.
myWebView.loadUrl("javascript:testEcho('Hello World!')");я понимаю, что вы уже прикрепили HTML-файл к этому веб-представлению. Не могли бы вы сказать мне, как ты это сделал?