内で実行さjavascript
れているhtml
ページにあるいくつかの関数を呼び出そうとしていますandroid webview
。コードが以下で実行しようとすることはかなり簡単ですjavascript
。Android アプリから、テストメッセージで関数を呼び出します。これにより、Androidアプリで、トーストを介してテストメッセージを表示するJava関数が呼び出されます。
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
は、JavaScriptインターフェースを介してWebViewで使用できるようにするJavaメソッドでデコレーターを使用する必要があることに注意してください。
myWebView.loadUrl("javascript:testEcho('Hello World!')");
HTMLファイルをそのWebビューに既に添付していることがわかります。どうやってそれをやったの?