AndroidWebビュー内で実行されているHTMLページにあるいくつかのJavaScript関数を呼び出そうとしています。コードが以下で実行しようとしていることは非常に単純です。Androidアプリから、テストメッセージを使用してjavascript関数を呼び出します。これにより、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!);" + "})()");
WebViewでJavaScriptを有効にしました
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();
}
}
私は自分が間違っているかもしれないことを確認するためにグーグルで多くの時間を費やしました。私が見つけたすべての例は、このアプローチを使用しています。誰かがここで何か間違っているのを見ますか?
編集: htmlで参照および使用されている他のいくつかの外部JavaScriptファイルがありますが、それらが問題である可能性がありますか?