WebView之app與h5間的互動
阿新 • • 發佈:2018-12-14
有時候,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、下發引數的形式
待完善!!!