Android 4.2.1,WebView和javascript界面​​中断

Nit*_*mer 34 javascript android webview

我有一个添加了javascript界面​​的webview,在大多数设备上都能正常运行,除了那些运行Android 4.2.1的设备.

我删除了大部分代码,并保留了一个非常基本的代码:

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");
Run Code Online (Sandbox Code Playgroud)

在javascript方面,测试代码如下所示:

Android.handshake();
Run Code Online (Sandbox Code Playgroud)

但是我在logcat中得到了这个:

E/Web控制台:未捕获TypeError:对象[对象对象]没有方法'握手'

同样,在我测试过的较旧的android os(<4.2.1)(最小版本为2.3.3)的设备中,这同样适用.

奇怪的是,如果我开始一个全新的项目,除了一个只有一个WebView的Activity,使用相同的代码,一切都可以正常工作,即使对于4.2.1,但当它是我的实际项目的一部分,事情中断.我正在使用的webview没有做任何事情,我提供的代码片段中没有包含这些内容.

对我来说最奇怪的是,javascript找到了Android对象,但它只是没有请求的方法(握手),怎么会这样呢?

任何帮助将不胜感激,因为这在过去的两周左右让我疯狂(这是一个我一直回去的错误,然后放弃等等).谢谢.

小智 96

从Android 4.2文档:

警告:如果已将targetSdkVersion设置为17或更高,则必须将@JavascriptInterface注释添加到您希望网页代码可用的任何方法(该方法也必须是公共的).如果您未提供注释,则在Android 4.2或更高版本上运行时,您的网页将无法访问该方法.