Android webviewとH 5インタラクション

2131 ワード

1.WebViewロードページ
webviewはローカルとネットワークのページをロードすることができて、htmlのファイルの位置によって、異なる書き方があります.
 mWebView.loadUrl("www.baidu.com");
 mWebView.loadUrl("file:///android_res/test.html");

通常、ウェブビューは、本アプリケーション内でページジャンプを実現するためにウェブchromeclientを再設定する.
mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            mWebView.loadUrl(url);
            return true;
        }
    });

また、本明細書のh 5とのインタラクションを実現するにはjsインタフェースの使用を許可する必要があり、実際の開発では、一般的にこの文を加える.
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);

2.WebView呼び出しjsメソッド
jsメソッドを呼び出すには、jsを呼び出す戻り値のないメソッドの場合、loadメソッドを直接使用することができます.
mWebView.loadUrl("javascript:do()");

戻り値メソッドを呼び出すにはevaluatjavascriptメソッドを呼び出す必要があります
mWebView.evaluateJavascript("sum(1,2)", new ValueCallback() {
        @Override
        public void onReceiveValue(String value) {
            Toast.makeText(ViewPagerGalleryDemoActivity.this, "value = " + value, Toast.LENGTH_SHORT).show();
        }
    });

jsコードは以下の通りです.

    function sum(a,b){
    return a+b;
    }
    function do(){
    document.getElementById("p").innerHTML="hello world";
    }


3.jsがAndroidメソッドを呼び出す
Androidでjavascriptinterfaceインタフェースと宣言を定義する必要があります
  • まずクラスとメソッドを追加し、javascriptinterface public class TestJavaScriptInterface{@JavascriptInterface private String testJavaScriptInterface(){return"hello javascript"}
  • javascriptinterface h 5へのスイッチ
     mWebView.addJavascriptInterface(new TestJavaScriptInterface(), "android");
    
  • を開く
  • jsコードは以下の通りである:
  • 
    function s(){
        //  Java back()  
        var result =window.android.testJavaScriptInterface();
        document.getElementById("p").innerHTML=result;
    }