Saya mencoba memanggil beberapa javascript
fungsi yang duduk di html
halaman yang berjalan di dalam sebuah android webview
. Cukup sederhana apa yang coba dilakukan oleh kode di bawah ini - dari aplikasi android, panggil javascript
fungsi dengan pesan tes, yang intinya memanggil fungsi java kembali di aplikasi android yang menampilkan pesan pengujian melalui roti panggang.
The javascript
Fungsi terlihat seperti:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
Dari WebView, saya telah mencoba memanggil javascript
cara-cara berikut tanpa hasil:
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
Saya mengaktifkan javascript
diWebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
Dan inilah Java
Kelas
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();
}
}
Saya telah menghabiskan banyak waktu untuk melihat-lihat kesalahan saya. Semua contoh yang saya temukan menggunakan pendekatan ini. Adakah yang melihat sesuatu yang salah di sini?
Sunting: Ada beberapa javascript
file eksternal lain yang direferensikan & digunakan dalam html
, mungkinkah itu masalahnya?
@JavascriptInterface
dekorator pada metode Java yang ingin Anda buat tersedia untuk WebView melalui Antarmuka JavaScript.
myWebView.loadUrl("javascript:testEcho('Hello World!')");
saya mengerti bahwa Anda telah melampirkan file html ke tampilan web itu. Bisakah Anda memberi tahu saya bagaimana Anda melakukannya?