İçinde çalışan javascript
bir html
sayfada oturan bazı işlevleri çağırmaya çalışıyorum android webview
. Kodun aşağıda yapmaya çalıştığı oldukça basit - android uygulamasından, javascript
test mesajıyla bir fonksiyonu çağırın , bu da tost yoluyla test mesajını gösteren android uygulamasında bir java fonksiyonunu geri çağırır.
javascript
Fonksiyon görünüyor gibi:
function testEcho(message){
window.JSInterface.doEchoTest(message);
}
WebView, ben javascript
şanssız aşağıdaki yolları aramayı denedim :
myWebView.loadUrl("javascript:testEcho(Hello World!)");
mWebView.loadUrl("javascript:(function () { " + "testEcho(Hello World!);" + "})()");
Ben etkinleştirmek did javascript
üzerindeWebView
myWebView.getSettings().setJavaScriptEnabled(true);
// register class containing methods to be exposed to JavaScript
myWebView.addJavascriptInterface(myJSInterface, "JSInterface");
Ve Java
Sınıfı Heres
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();
}
}
Neler yanlış yaptığımı görmek için çok zaman harcadım. Bulduğum tüm örnekler bu yaklaşımı kullanır. Burada yanlış bir şey gören var mı?
Düzenleme:javascript
başvurulan ve kullanılan birkaç dış dosyalar vardır, html
onlar sorun olabilir mi?
@JavascriptInterface
dekoratörü JavaScript Arayüzü aracılığıyla WebView için kullanılabilir hale getirmek istediğiniz Java yöntemlerinde kullanmanız gerektiğini lütfen unutmayın .
myWebView.loadUrl("javascript:testEcho('Hello World!')");
sizin zaten bunu Web görünümündeki html dosyasına ekledikten anlıyoruz. Bana bunu nasıl yaptığını söyler misin?