ฉันพยายามที่จะเรียกบาง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 ไปกับ webview นั้นแล้ว คุณบอกฉันได้อย่างไรว่าคุณทำอย่างนั้น?