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或更高版本上运行时,您的网页将无法访问该方法.
| 归档时间: |
|
| 查看次数: |
25538 次 |
| 最近记录: |