Demo 位址:碼雲
一、Android API提供的官方互動方式
1.webView.getSettings().setJavaScriptEnabled(true);設定webview運作執行js代碼。
2.在提供給H5使用的方法上添加注解@JavascriptInterface,隻有存在此注解的方法才可以被
H5使用(谷歌面對webview已知漏洞在API 4.4以後增加的防禦措施)。
3.webView.addJavascriptInterface(Object,name);向H5中注入java對象,H5通過name調用java方法。
如:
Android:
webview.addJavascriptInterface(new NativeMethodList(),"nativeMethod");
class NativeMethodList{
@JavascriptInterface
public void show(){
TalkApp.talk(“調用了native無參方法");
}
}
H5:
document.getElementById("btn0").onclick = function({
nativeMethod.show();
};
二、加載解析url的互動方式
1.webView.setWebViewClient(WebViewClient);
2.重寫WebViewClient中shouldOverrideUrlLoading方法,這個方法回調有兩個參數,WebView對象和WebResourceRequest對象。
3.解析WebResourceRequest對象,拿到儲存在url中的參數,根據一定規則調用不同的java方法。
常見用法:打開某個應用界面:
在某一個Activity中設定intent-filter标簽可以監聽url,如下:
android:host="app"
android:path="/main"/>
在打開的Activity中通過getIntent().getData()可以拿到打開它的url,解析其可以擷取到url中的各種參數。
注:現市場上大部分浏覽器可以通過scheme打開應用,需要在步驟2中添加跳轉Activity的方法,否則應用内部的webview無法跳轉應用界面。
三、Cookie 使用
1.
webViewCookieManager instance = CookieManager.getInstance();
instance.getCookie(url);
可以擷取到url對應的cookie,也就是說H5與Android可以同時操作cookie
四、JsBridge : 5K star的開源庫
這個庫解決了H5 和 Android之間的方法調用,通過加載解析url的方式,并向H5中注入script對象,同時維護Android 和 H5的消息隊列,已達到調用方法,傳回值得功能。