【android】 在高版本中进行WebView与js交互需要注意的问题
2015-01-20 10:55
1061 查看
1.evaluateJavacript()方法调用js
在4.4及以后的版本中,采用webView.loadUrl("javascript:test()")调用js则会出现问题。理论上,loadUrl()方法只支持单行js的执行,但是在target=19及以后,该方法可能会不起作用。所以必须采用如下方法执行js:
[java] view
plaincopy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/9e12f1d3e499fc949c886e7c9e0484f9)
webView.evaluateJavascript("test()", new ValueCallback<String>() {
@Override
public void onReceiveValue(String arg0) {
}
});
2.@JavacriptInterface注解
[align=left]在编写html5应用时,需要在js代码中访问java中的函数,则会用到WebView的addJavascriptInterface()函数。因为安全问题,在target=17及以上时,只能访问带有@JavascriptInterface注解的函数。之前,任何public的函数都可以在js代码中访问,其中的getClass()函数也能被访问到,然后js可以通过反射来访问其他一些内容。通过引入该注解,则在js中只能访问有该注解的函数,这样可以增强安全性。[/align]
3. 注意,与JS代码绑定的的这个Java对象运行在另一个线程中,与创建它的线程不是一个线程。(这一点在android所有版本中都要注意)
[align=left]转自http://blog.csdn.net/kaka123ac/article/details/42871441[/align]
在4.4及以后的版本中,采用webView.loadUrl("javascript:test()")调用js则会出现问题。理论上,loadUrl()方法只支持单行js的执行,但是在target=19及以后,该方法可能会不起作用。所以必须采用如下方法执行js:
[java] view
plaincopy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
webView.evaluateJavascript("test()", new ValueCallback<String>() {
@Override
public void onReceiveValue(String arg0) {
}
});
2.@JavacriptInterface注解
[align=left]在编写html5应用时,需要在js代码中访问java中的函数,则会用到WebView的addJavascriptInterface()函数。因为安全问题,在target=17及以上时,只能访问带有@JavascriptInterface注解的函数。之前,任何public的函数都可以在js代码中访问,其中的getClass()函数也能被访问到,然后js可以通过反射来访问其他一些内容。通过引入该注解,则在js中只能访问有该注解的函数,这样可以增强安全性。[/align]
3. 注意,与JS代码绑定的的这个Java对象运行在另一个线程中,与创建它的线程不是一个线程。(这一点在android所有版本中都要注意)
final class DemoJavaScriptInterface{ public DemoJavaScriptInterface() { } /** * 此处运行在非主线程,所以要post一下。 */ public void clickOnAndroid(){ mHandler.post(new Runnable() { @Override public void run() { // 此处调用 HTML 中的javaScript 函数 mWebView.loadUrl("http://www.baidu.com"); } }); } }
[align=left]转自http://blog.csdn.net/kaka123ac/article/details/42871441[/align]
相关文章推荐
- android WebView与JS交互以及需要注意问题
- Android WebView JS交互 混淆打包需要注意的问题
- WebView与js交互过程中需要注意的问题
- android webView 和js交互中需要注意的几点
- Android 4.2 webview注入js对象时需要注意的问题
- Android中webview和js之间的交互及注意事项
- [Android]Webview中JS接口调用Java-版本问题
- android与js交互,以及webview漏洞修复问题
- webview 笔记二(android和js交互、包括链接跳转常见问题处理,加载监视,拦截Url等)
- 解决Android签名混淆后WebView与JS交互失效的问题
- android webview H5开发若干问题之问题三:android和js交互问题
- Android开发中webView的使用以及与js交互传值问题
- 记录Android 版本小于19的Webview和js交互的一个坑!
- Android 中 WebView 与 js 简单交互实现图文混排效果,解决图片自适应屏幕与查看大图问题
- android webview js交互 调取本地相册(兼容各个版本)并且上传到服务器端。
- Android中webview和js之间的交互及注意事项
- android webview与js交互注意事项
- Android 中 WebView 与 js 简单交互实现图文混排效果,解决图片自适应屏幕与查看大图问题
- Android进阶_WebView与JS进行交互
- android webview与js交互时遇到的问题解决