Я намагаюся викликати деякі 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 до цього веб-перегляду. Не могли б ви сказати мені, як ви це зробили?