html5与安卓native交互,相互调用
来源:互联网 发布:淘宝代充平台 编辑:程序博客网 时间:2024/06/04 17:59
转发自http://blog.csdn.net/a38017032/article/details/47700325
- WebView的使用
WebView是Android中的一个类,主要是用来承载网页的信息。WebView中比较重要的信息有三个类:WebChromeClient
、WebViewClient
和WebSettings
。
1.WebChromeClient:辅助WebView处理Javascript的对话框,加载进度条,网站图标,网站title等等。
(1)onProgressChanged(WebView view,int newProgress),通知现在的html加载的进度。
(2)onReceivedTitle(WebView view,String title),通知现在的title。
(3)onReceivedIcon(WebView view,Bitmap icon),通知现在的icon图标。
(4)onReceivedTouchIconUrl(WebView view, String url,boolean precomposed),通知现在的icon的url。
(5)onJsPrompt(WebView iew,String url,String message,String defaultValue,JsPromptResult result),html通过js调用prompt的时候就会调用这个函数。
(6)onJsAlert(WebView view,String url,String message,JsResult result), html通过js调用alert的时候就会调用这个函数。
(7)onJsConfirm(WebView view, String url, String message,JsResult result),html通过js调用confirm的时候就会调用。
(8)…
2.WebViewClient:帮助WebView处理各种通知、请求事件等等。
(1)shouldOverrideUrlLoading(WebView view,String url),当点击html中的含有具有跳转信息的内容时都会回调这个函数,告诉跳转的url。
(2)onPageStart(WebView view,String url,Bitmap favicon),当webview开始加载html的时候就会回调这个函数。
(3)onPageFinish(WebView view,String url),当webview加载完html的时候就会回调这个函数。
(4)…
3.WebSettings:用来设置WebView的一些属性。
(1)setJavaScriptEnable(boolean flag),是否支持javascript。
(2)setSupportZoom(boolean support),是否支持缩放。
(3)…
4.重要的方法
(1)loadUrl(String url),加载一个url的信息到WebView。
(2)loadUrl(String url,Map< String,String> additionalHttpHeader),加载一个url,并且带上一些url。
(3)loadData(String data, String mimeType, String encoding),用来给WebView加载数据。
(4)loadDataWithBaseURL(String baseUrl, String data,String mimeType, String encoding, String historyUrl),用来给WebView加载数据。
(5)addJavascriptInterface(Object object,String name),将定义了回调方法的对象object注入到webview中,这个时候webview中就可以通过name来调用native中的方法。
- Html5加载Javascript的过程
在学会了使用WebView以后还需要适当的了解一下Javascript代码是如何加载到Html5中的,难道仅仅是< script >标签就能将js的代码加载吗?显然不是。html5加载的时候是从上往下加载的,如果碰到js的代码或者碰到js的标签,会通过Javascript解释引擎加载进来,Javascript解释引擎是浏览器的一部分。当Javascript代码执行的时候,会将相应的部分在渲染一次。
- Native与Html5的交互方法
在大概的了解了WebView的时候,以及Html5的相关的知识以后就可以来看看如何的让Native与Html5的交互。(现在很多的Native应用都会嵌套一些Html5的页面在里面,方便一些业务方面的)
Native跳转到Html5的方式只有一种就是通过load的方式。
上面介绍WebView时候时的loadUrl、loadData和loadDataWithBaseURL都能在Native中加载Html5的界面。这里面也可以只加载部分分Javascript的代码。
Html5跳转到Native的方式则有比较多的方式。
不使用js sdk时的交互
(1)shouldOverrideUrlLoading,当点击WebView中承载过类似href的某个界面的时候。就会回调这个方法。将需要处理的逻辑写在shouldOverrideUrlLoading里面就行。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
(2)onJsPrompt(),onJsAlert()和onJsConfirm(),在html中设置prompt(),alert(),confirm(),点击的时候就会回调到这些方法中。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
当分别点击的时候就会回调到Native中。分别在里面做处理就行 。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
使用js sdk时的交互
通过前面介绍WebView的时候,可以通过addJavascriptInterface(),将native端的方法注入到WebView中,这样就可以通过一个name在html中调用native。
将Object注入到WebView,标识符号是egos。
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
在html中使用。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
点击以后就会弹出Toast。
- 使用js sdk的优势以及劣势
优势
1.对Javascript代码单独的书写,方便项目的开发和维护。
2.方便应用的更新,WebView的更新只需要后台的更新就行不需要移动端还做处理。
劣势
使用addJavascriptInterface()在Android 17一下会有一个漏洞,使用起来不安全。在上面的代码中会发现hello(String name)上面加了一个@JavascriptInterface,这个是在Android 17以后处理这个漏洞的方法。在Android 17以后,想要安全的处理这个漏洞,肯定是不能再使用addJavascriptInterface()这个方法,现在可以使用的是前面的showOverrideUrlLoading(),或者是通过onJsPrompt(),onJsAlert()和onJsConfirm()这些方法。上面都有介绍。
- html5与安卓native交互,相互调用
- native与html5交互
- Native与html5交互
- Android--Native与html5交互
- 安卓与JS通信相互调用
- Native通过Javascript与Html5交互
- Native通过Javascript与Html5交互
- 安卓 native 和 H5 的交互
- android webview native与JavaScript相互调用 java与JavaScript相互调用
- Android关于JavaScript与Native方法相互调用
- 安卓与servlet交互
- 安卓与js交互
- 安卓与JS交互
- PYTHON 与C相互交互调用实例解析
- PYTHON 与C相互交互调用实例解析
- PYTHON 与C相互交互调用实例解析
- JavaScript与ActionScript函数相互调用(数据的交互)
- Android:WebView与Javascript交互(相互调用参数、传值)
- svn分支管理的使用与经验
- Javascript 作用域 闭包 原型和原型链
- SOJ 1035
- 沉浸式状态栏框架-SystemBarTint
- git常用命令以及使用技巧
- html5与安卓native交互,相互调用
- 【算法】牛客网模拟题编程部分3.23日
- UVA
- JAVA多线程之——线程的实现方式
- ZSTUOJ 4270: 同源数
- 在mac系统安装Apache Tomcat的详细步骤
- [leetcode]83. Remove Duplicates from Sorted List
- Jsp中标签使用:tag 文件方式 和 tld文件方式
- javaScript采用面向对象的方式实现实现拖拽