最近項(xiàng)目開(kāi)發(fā)使用了 Android 原生和 H5 的混合開(kāi)發(fā)冒签,以前也沒(méi)怎么接觸過(guò)。所以這次和 H5 聯(lián)調(diào)對(duì)接還是踩了很多坑,這里也做個(gè)總結(jié)希望可以幫助到大家...
首先 Android 和 H5 主要的坑是在彼此之間的數(shù)據(jù)交互蟹地;而如果只是彼此之間簡(jiǎn)單的界面調(diào)用的話(huà),還不是很難藤为。網(wǎng)上搜索有很多的資料怪与,這里也就不說(shuō)了。
1凉蜂,Android 調(diào)用 H5 的函數(shù)琼梆,并且 Android 端傳遞相關(guān)參數(shù)到 H5性誉;
H5 界面代碼如下:
功能函數(shù) getFromAndroid 中的參數(shù) userid 就是 Android 端傳遞過(guò)來(lái)的參數(shù)值窿吩,在 H5 代碼中就也可以直接使用了...
而 Android 端代碼如下:
其中 h5Str 就是 Android 端想傳遞給 H5 界面的數(shù)據(jù)。其中需要注意的是 a.拼接傳遞參數(shù)的時(shí)候需要注意添加雙引號(hào)和斜杠错览,否則可能會(huì)傳遞不過(guò)去纫雁;b.要注意頁(yè)面加載的生命周期,需要等到 H5 的界面加載完成后才開(kāi)始傳遞參數(shù)倾哺。
2 H5 傳遞參數(shù)到 Android 轧邪;
這里主要坑的地方是并沒(méi)有直接的方式向上面那樣來(lái)從 H5 界面來(lái)傳遞參數(shù)到 Android 端,所以就只能首先調(diào)用 H5 方法羞海,然后再在 所調(diào)用的 H5 方法中回調(diào)一個(gè) Android 端方法忌愚,并且傳遞相關(guān)參數(shù)過(guò)來(lái)。
Android 端代碼如下:
上面 setUserId()為 H5 方法却邓, JsInteration.back( String value) 為 H5 setUserId() 方法再次調(diào)用的 Android 端方法硕糊。其中 String value 就是 H5 傳遞過(guò)來(lái)的參數(shù);
H5 界面代碼如下:
其中 value 值就是需要傳遞過(guò)去的參數(shù)值
3.最后加上 Android 端攔截 H5 界面的點(diǎn)擊事件方法:
Android 端代碼如下:
H5 界面代碼如下:
其中重點(diǎn)主要是使用 shouldOverriderUrlLoading() 方法腊徙,使用參數(shù) url 來(lái)匹配简十。(這是和 H5 約定的 url;注意這里的 url 它的格式撬腾,如果只是常量字符串是匹配不到的)