(转)WebView与JS交互和VedioView的简单使用
来源:互联网 发布:淘宝女装模特名字大全 编辑:程序博客网 时间:2024/05/20 23:04
一、WebView介绍转载自:http://www.2cto.com/kf/201608/536207.html
我们都知道我们的Native是可以和web页面中的JS进行交互的,而且方法都差不多,那我们就来看看他们的差别和使用场景吧
首先我们必须设置webView.getSettings().setJavaScriptEnabled(true);
1.Webview里面的界面调用Native Java代码(即调用本地代码)
protected class AndroidJsInterface{ private Context context; public AndroidJsInterface(Context context){ this.context = context; } @JavascriptInterface public void showToast(String msg){ ToastUtil.showShort(context,msg); } }
值得注意的是,在Android4.2开始,我们必须田间@JavascriptInterface注解,我们的代码才能够被Js所调用。
然后我们就需要把这个接口类传递给Webview,然Js可以调用:webView.addJavascriptInterface(new AndroidJsInterface(this),"Android");
这个方法的第二个参数是任意一个String类型的值,这个字会关系到我们后面调用接口中的方法。
下面就是我在Html页面中定义了一个Button,让点击的时候调用Native的Toast,然后就是按钮,我们绑定了它的点击事件:
<!DOCTYPE html> <html> <head> <script type="text/javascript"> function showToast(){ Android.showToast("pupup window from HTML5!"); } </script> <meta charset="utf-8"> <title>first html5 page</title> <style type = "text/css"> p{font-size:150%;} </style> </head> <body> <header> <h1>title</h1> </header> <section> <button id ="test" onclick = "showToast()">click here show toast</button> <article> <p>this is a picture</p> </article> <figure class="marginRight"><img src ="http://avatar.csdn.net/D/1/F/1_qq_24956515.jpg" alt="Image"/></figure> </section> </body> </html>
使用时代码里写上:
String myTest = "file:///android_asset/html_test22.html"; webView.loadUrl(myTest);这里是使用本地的Html文件,如果有不懂请参考这篇文章:http://blog.csdn.net/u011150924/article/details/53079916
2.Native调用Webview中的Js
还记得我们前面讲过的WebViewClient吗?我们这里就需要先实现它,然后在它的onPagerFinish()回调函数中进行处理,这样是为了保证我们代码的正常运行,因为在以往的时候,当我们没有在这个回调当中执行操作,而是直接在LoadUrl()后就对页面进行操作,结果发现我们的代码没有起作用,最后发现是页面没有加载完成,而我们就去执行代码,所以造成了这种没必要的操作。
为了测试Native调用Js,我们现在Html页面中定义一个方法和一个Span标签:
在方法中我们让调用show()方法后,将Span标签里面的内容改为一个字符串,并弹出一个alert。
在Native中我们通过如下的LoadUrl()的方法调用这个函数:
就是这么简单,我们就实现了Native到Js的调用,但是我们用一个需求,我们向得到一个回调怎么办了?Google在Android4.4为我们新增加了一个新方法,这个方法比loadUrl方便,而且比loadUrl效率更高,因为每次load都会将页面刷新一次。
由于新增加的方法是4.4才引入的,所以我们使用的时候需要添加版本的判断:
、
如果是4.4之前的老版本,我们才用loadUrl的方式:
3.我们在开始的时候贴出了一个我们使用setJavaScriptEnable()的警告,那我们怎么来处理这个问题了,对于大多数的应用其实是不需要的,如果需要我们可以使用一种安全的方式,例如WebChromeClient中有一个onJsPrompt的回调方法,我们可以将我们需要传递的js命令转换为一种协议的模式,通过这个回调函数传递到我们的Native中,这样就避免了我们直接与代码交互,具体的过程在这里就不介绍了,下面提出一个该框架的github地址,大家需要的时候可以去下载:https://github.com/pedant/safe-java-js-webview-bridge
三、VedioView简单使用转载自:http://blog.csdn.net/chenzheng_java/article/details/6258456
video.xml
- (转)WebView与JS交互和VedioView的简单使用
- WebView的简单使用及和js的交互
- js与webView的简单交互
- WebView与JS的简单交互
- WebView与JS的交互和优化
- Android webview使用 webview和js交互
- WebView与js的交互
- js与webView的交互
- WebView 与 JS 的交互
- webView 与 JS 的交互
- WebView与Js的交互
- webview与js的交互
- WebView的简单使用,附加一点JS交互操作
- iOS开发 ----- webView和JS的简单交互
- webview和js的交互
- webview和js的交互
- webView 和Js的交互
- js和webview的交互
- mysql中解决:Error Code: 1044. Access denied for user 'root'@'%' to database
- 欢迎使用CSDN-markdown编辑器
- Redis详细介绍
- spring源码解析-资源管理Resource
- Sql server 创建同义词CREATE SYNONYM介绍
- (转)WebView与JS交互和VedioView的简单使用
- JAVA 各种数值类型最大值和最小值 Int, short, char, long, float,&nbs
- HttpClient数据传输的编码方式
- VOIP听筒与扬声器的切换
- 关于安装MongoDB的过程与错误48 100的解决方法
- windows 下reactnative环境配置
- attemping运行Android模拟器时,32位Linux Android模拟器的二进制文件已被弃用
- 花点时间打理下技术博客
- aar打包和用aar打apk包的混淆问题