webview与js交互在targetsdkversion设置为19的时候出现的问题
2017-11-23 13:42
281 查看
转自:http://blog.csdn.net/kaka123ac/article/details/42871441
1.在WebView中调用js,在4.4(target = 19)之前,只有一种方法:
调用js方法 test()
webView.loadUrl("javascript:test()");
注意,必须在主线程中调用,如果在非UI线程调用,可能会出错。所以,一般这样调用。
[java] view
plain copy
handler.post(
new Runnable() {
webView.loadUrl("javascript:test()");
}
);
2.evaluateJavacript()方法调用js
在4.4及以后的版本中,采用第一种方法则会出现问题。理论上,loadUrl()方法只支持单行js的执行,但是在target=19及以后,该方法可能会不起作用。所以必须采用如下方法执行js:
[java] view
plain copy
webView.evaluateJavascript("test()", new ValueCallback<String>() {
@Override
public void onReceiveValue(String arg0) {
}
});
同样,evaluateJavascript()方法也必须在UI主线程执行。
3.@JavacriptInterface注解
[align=left]在编写html5应用时,需要在js代码中访问java中的函数,则会用到WebView的addJavascriptInterface()函数。因为安全问题,在target=17及以上时,只能访问带有@JavascriptInterface注解的函数。之前,任何public的函数都可以在js代码中访问,其中的getClass()函数也能被访问到,然后js可以通过反射来访问其他一些内容。通过引入该注解,则在js中只能访问有该注解的函数,这样可以增强安全性。[/align]
1.在WebView中调用js,在4.4(target = 19)之前,只有一种方法:
调用js方法 test()
webView.loadUrl("javascript:test()");
注意,必须在主线程中调用,如果在非UI线程调用,可能会出错。所以,一般这样调用。
[java] view
plain copy
handler.post(
new Runnable() {
webView.loadUrl("javascript:test()");
}
);
2.evaluateJavacript()方法调用js
在4.4及以后的版本中,采用第一种方法则会出现问题。理论上,loadUrl()方法只支持单行js的执行,但是在target=19及以后,该方法可能会不起作用。所以必须采用如下方法执行js:
[java] view
plain copy
webView.evaluateJavascript("test()", new ValueCallback<String>() {
@Override
public void onReceiveValue(String arg0) {
}
});
同样,evaluateJavascript()方法也必须在UI主线程执行。
3.@JavacriptInterface注解
[align=left]在编写html5应用时,需要在js代码中访问java中的函数,则会用到WebView的addJavascriptInterface()函数。因为安全问题,在target=17及以上时,只能访问带有@JavascriptInterface注解的函数。之前,任何public的函数都可以在js代码中访问,其中的getClass()函数也能被访问到,然后js可以通过反射来访问其他一些内容。通过引入该注解,则在js中只能访问有该注解的函数,这样可以增强安全性。[/align]
相关文章推荐
- activitygroup的子activity中嵌套webview,利用webview与js交互,在实现js点击的内部类代码中实现activity跳转出现的线程问题
- WebView使用中js调用java代码时targetSdkVersion大于17时,无法调用成功
- ScrollView与WebView结合使用时,设置webview字体大小的时候出现下方留白的终极解决方案
- 关于安卓开发webview与js交互的问题
- WebView与js交互遇到的问题
- 解决Android签名混淆后WebView与JS交互失效的问题
- android webview设置缩放按钮时候无法显示问题
- Adnroid WebView使用,js交互与弹窗设置
- 使用webview与native 应用做交互的时候出现警告
- 解决Android签名混淆后WebView与JS交互失效的问题
- webview的基本设置和与js的相互交互
- Android 利用webview开发webApp和本地交互出现的一个问题
- android Webview中注入js,用于解决第三方页中出现返回事件window.history.go(-1),无法响应问题
- webview js 交互问题
- Android 中 WebView 与 js 简单交互实现图文混排效果,解决图片自适应屏幕与查看大图问题
- 工作中遇到的问题之WebView与JS交互问题
- webview与js交互 问题一
- webview js 与java代码交互问题(成员变量名 和方法名不能重名 啃爹啊)
- JS与WebView交互存在的一些问题
- 【android】 在高版本中进行WebView与js交互需要注意的问题