Я намагаюся викликати деякі javascriptфункції, що сидять на htmlсторінці, що працює всередині android webview. Досить просто, що код намагається зробити нижче - з програми Android викличте javascriptфункцію з тестовим повідомленням, яке викликає функцію java назад у додатку для Android, який відображає тестове повідомлення через тост.
У javascriptфункції виглядає наступним чином :
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
У веб-перегляді я намагався викликати 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, які ви хочете зробити доступними для веб-перегляду через інтерфейс JavaScript.
myWebView.loadUrl("javascript:testEcho('Hello World!')");я розумію, що ви вже додали файл HTML до цього веб-перегляду. Не могли б ви сказати мені, як ви це зробили?