我有一个带有添加的javascript界面的webview,它可以在大多数设备上完美运行,除了那些运行Android 4.2.1的设备。Android 4.2.1,WebView和JavaScript界面中断
我删除了大部分的代码,并留在了一个非常基本的代码:
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 Console: Uncaught TypeError: Object [object Object] has no method 'handshake'
同样,这个相同的确切的事情工作正常的设备谁是hav e已经测试过的旧版android os(< 4.2.1)(最小版本是2.3.3)。
奇怪的是,如果我开始一个全新的项目,只有一个只有一个WebView的Activity,具有相同的代码,即使对于4.2.1,一切正常,但是当它是我的实际项目,事情打破。 没有任何我正在做的webview这是我没有提供的代码片段中。
什么是我最奇怪的是,JavaScript找到Android对象,但它只是没有请求的方法(握手),那怎么可能?
任何帮助将不胜感激,因为这在过去的两周左右一直让我疯狂(这是一个我回到所有时间,然后放弃等错误)。 谢谢。
另外,您必须设置minSdkVersion> = 17,即4.2,Jelly bean MR1。 除非,它会做@Nitzan-Tomer所描述的。造成这种行为的原因是Android安全问题。 –