天天看點

Android原生h5互跳控制,Android原生與H5互動方式

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的消息隊列,已達到調用方法,傳回值得功能。