Tôi đang cố gắng gọi một số javascript
chức năng ngồi trong một html
trang chạy bên trong một android webview
. Khá đơn giản những gì mã cố gắng thực hiện bên dưới - từ ứng dụng Android, gọi một javascript
hàm với thông báo kiểm tra, trong đó inturn gọi hàm java trở lại trong ứng dụng android hiển thị thông báo kiểm tra qua bánh mì nướng.
Các javascript
hình chức năng thích:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
Từ WebView, tôi đã thử gọi các javascript
cách sau mà không gặp may:
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
Tôi đã kích hoạt javascript
trênWebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
Và đây là Java
lớp học
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();
}
}
Tôi đã dành rất nhiều thời gian để đi vòng quanh để xem những gì tôi có thể làm sai. Tất cả các ví dụ tôi đã tìm thấy sử dụng phương pháp này. Có ai thấy điều gì sai ở đây không?
Chỉnh sửa: Có một số javascript
tệp bên ngoài khác đang được tham chiếu & sử dụng trong html
, chúng có thể là vấn đề không?
@JavascriptInterface
trang trí trên các phương thức Java mà bạn muốn cung cấp cho WebView thông qua Giao diện JavaScript.
myWebView.loadUrl("javascript:testEcho('Hello World!')");
tôi hiểu rằng bạn đã đính kèm tệp html vào webview đó. Bạn có thể cho tôi biết làm thế nào bạn làm điều đó?