前言
? ? ? 隨著原生開發(fā)與混合開發(fā)越來越多,相信很多人在開發(fā)的時(shí)候都用過 WebView,遇到的坑也不少呵萨。我會(huì)推薦兩種方法解決日常開發(fā)中遇到的問題。下面針對(duì)問題對(duì)混合開發(fā)之WebView使用總結(jié)该面。
一窒升、WebView與Javascript交互
WebView與Javascript交互是雙向的數(shù)據(jù)傳遞
1.H5網(wǎng)頁(yè)的JS函數(shù)調(diào)用Native函數(shù)
2.Native函數(shù)調(diào)用JS函數(shù)
具體實(shí)現(xiàn):? ? ? ? ? ? ??
1.)AndroidMainfest.xml中加入網(wǎng)絡(luò)權(quán)限
2.)WebView開啟支持JavaScript
注意:安全漏洞? ? ??
? ? ? 具有遠(yuǎn)程執(zhí)行漏洞跷睦,攻擊者可以通過暴露的JS接口功炮,結(jié)合Java反射機(jī)制執(zhí)行任意Java對(duì)象的方法溅潜,為所欲為。影響范圍:Android API level 小于17 (即Android 4.2之前的系統(tǒng)版本)薪伏。
3.)簡(jiǎn)單的H5網(wǎng)頁(yè)實(shí)現(xiàn)滚澜,主要實(shí)現(xiàn)actionFromNative()、actionFromNativeWithParam(String str)毅该,放在assets文件下(可以是網(wǎng)絡(luò)地址)
試?yán)a如下:
4.)Native實(shí)現(xiàn)與JS交互函數(shù):actionFromJs()博秫、actionFromJsWithParam()
以上就是WebView混合開發(fā)潦牛,下面針對(duì)方法做代碼簡(jiǎn)單說明:
? ?(1)js(HTML)訪問Android(Java)端代碼是通過jsObj對(duì)象實(shí)現(xiàn)的眶掌,調(diào)用jsObj對(duì)象中的函數(shù),如:?window.jsObj.actionFromJs()巴碗,這里的jsObj就是Native中添加接口的別名
(2)Android(Java)訪問js(HTML)端代碼是通過loadUrl函數(shù)實(shí)現(xiàn)的朴爬,訪問格式如:mWebView.loadUrl(“javascript:actionFromNative()”);
附github大神JS交互框如下:https://github.com/lzyzsd/JsBridge
總結(jié):
? ? ? 通過以上方法基本可以解決日常開發(fā)中混合開發(fā)交互的需求,如果有更好的方法歡迎提出橡淆。