1. 程式人生 > >WebView之app與h5間的互動

WebView之app與h5間的互動

有時候,h5需要呼叫app的方法,並且回撥呼叫結果給h5,這就是app與h5之間的互動了。

1、javascript方式

h5呼叫app方法: 在app端定義要執行的方法,h5在需要的地方呼叫該方法。 app端: 第一步:初始化設定

WebSettings mSettings = this.getSettings();
mSettings.setJavaScriptEnabled(true);   //開啟javascript

第二步:新增js介面

//第二個欄位是WebViewJsInterface介面的物件名,在h5呼叫時需要用到
mWebView.addJavascriptInterface(new WebViewJsInterface(), "android");

第三步:定義介面方法,給h5呼叫

public class WebViewJsInterface {
	@JavascriptInterface
	public void actionShare(String json) {
   	 //TODO
	}
}

第四步:在h5頁面載入完後注入js程式碼(讓h5能夠識別當前是android呼叫還是ios呼叫):

mWebView.setWebViewCallback(new ProgressWebView.WebViewCallback() {
    @Override
    public void onPageFinished(WebView view, String url) {
        //載入一個js,返回當前的平臺資訊:android
        view.loadUrl("javascript:function qlClient(){return \"android\";}");
        //TODO
    }

    @Override
    public void onShouldOverrideUrlLoading(WebView view, String url) {
    }
});

h5端: 判斷當前呼叫物件(android/ios/h5),然後執行相應的方法:

function onClick(){
	switch(qlClient()){
    	case "android":
        	//TODO
        	window.android.actionShare(json)
        	break;
    	case "ios":
        	//TODO
        	break;
    	case "h5":
        	//TODO
        	break;
	}
}

//注意:window.android.actionShare(json);分析
window:固定寫法
android:是mWebView.addJavascriptInterface(new WebViewJsInterface(), "android");的第二個引數
actionShare(json):是js介面定義的回撥用方法

2、下發引數的形式

待完善!!!