Android 4.2.1を実行しているデバイスを除いて、ほとんどのデバイスで完全に機能するjavascriptインターフェイスが追加されたWebビューがあります。
私はほとんどのコードを削除し、非常に基本的なコードを使用しました。
this.webView.getSettings().setJavaScriptEnabled(true);
this.webView.setWebChromeClient(new WebChromeClient());
this.webView.addJavascriptInterface(new Object() {
public void handshake() {
Log.d("JS", "handshake no params");
}
public void handshake(String json) {
Log.d("JS", "handshake with params: " + json);
}
}, "Android");
javascript側では、テストコードは次のようになります。
Android.handshake();
しかし、私はこれをlogcatで取得します:
E / Webコンソール:キャッチされていないTypeError:オブジェクト[オブジェクトオブジェクト]にメソッド「ハンドシェイク」がありません
繰り返しますが、これとまったく同じことは、私がテストした古いandroid os(<4.2.1)(最小バージョンは2.3.3)を搭載したデバイスで正常に機能します。
奇妙なことに、まったく新しいプロジェクトを開始し、WebViewだけを含む単一のアクティビティだけで同じコードを使用すると、4.2.1でもすべてが正常に機能しますが、実際のプロジェクトの一部である場合は問題が発生します。私が提供したこのコードスニペットに含まれていないWebビューで私がしていることは何もありません。
私にとって最も奇妙なのは、JavaScriptがAndroidオブジェクトを検出したが、要求されたメソッド(ハンドシェイク)がないことです。どうすればよいでしょうか。
これは過去2週間ほど私を夢中にさせてきたので、どんな助けでも大いに感謝されます(それは私がいつも戻って、それからあきらめるなどのバグです)。ありがとう。