最近項目開發(fā)使用了 Android 原生和 H5 的混合開發(fā),以前也沒怎么接觸過。所以這次和 H5 聯(lián)調(diào)對接還是踩了很多坑,這里也做個總結(jié)希望可以幫助到大家...
首先 Android 和 H5 主要的坑是在彼此之間的數(shù)據(jù)交互;而如果只是彼此之間簡單的界面調(diào)用的話,還不是很難。網(wǎng)上搜索有很多的資料,這里也就不說了。
1,Android 調(diào)用 H5 的函數(shù),并且 Android 端傳遞相關(guān)參數(shù)到 H5;
H5 界面代碼如下:

功能函數(shù) getFromAndroid 中的參數(shù) userid 就是 Android 端傳遞過來的參數(shù)值,在 H5 代碼中就也可以直接使用了...
而 Android 端代碼如下:


其中 h5Str 就是 Android 端想傳遞給 H5 界面的數(shù)據(jù)。其中需要注意的是 a.拼接傳遞參數(shù)的時候需要注意添加雙引號和斜杠,否則可能會傳遞不過去;b.要注意頁面加載的生命周期,需要等到 H5 的界面加載完成后才開始傳遞參數(shù)。
2 H5 傳遞參數(shù)到 Android ;
這里主要坑的地方是并沒有直接的方式向上面那樣來從 H5 界面來傳遞參數(shù)到 Android 端,所以就只能首先調(diào)用 H5 方法,然后再在 所調(diào)用的 H5 方法中回調(diào)一個 Android 端方法,并且傳遞相關(guān)參數(shù)過來。
Android 端代碼如下:


上面 setUserId()為 H5 方法, JsInteration.back( String value) 為 H5 setUserId() 方法再次調(diào)用的 Android 端方法。其中 String value 就是 H5 傳遞過來的參數(shù);
H5 界面代碼如下:

其中 value 值就是需要傳遞過去的參數(shù)值
3.最后加上 Android 端攔截 H5 界面的點擊事件方法:
Android 端代碼如下:

H5 界面代碼如下:

其中重點主要是使用 shouldOverriderUrlLoading() 方法,使用參數(shù) url 來匹配。(這是和 H5 約定的 url;注意這里的 url 它的格式,如果只是常量字符串是匹配不到的)