Android webview和H5交互

1. WebView加載頁面

webview可以加載本地和網(wǎng)絡(luò)頁面,根據(jù)html的文件位置,有不同的寫法.

 mWebView.loadUrl("www.baidu.com");
 mWebView.loadUrl("file:///android_res/test.html");

通常情況下,webview會重新設(shè)置webchromeclient,以便在本應(yīng)用內(nèi)實(shí)現(xiàn)頁面跳轉(zhuǎn).

mWebView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            mWebView.loadUrl(url);
            return true;
        }
    });

另外,要實(shí)現(xiàn)本文的與h5交互必須允許使用js接口,在實(shí)際開發(fā)中,一般都要加上這一句.

WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);

2. WebView調(diào)用js方法

調(diào)用js方法有兩種情況: 如果調(diào)用js的無返回值方法, 可以直接使用load方法

mWebView.loadUrl("javascript:do()");

如果要調(diào)用有返回值方法,需要調(diào)用evaluatjavascript方法

mWebView.evaluateJavascript("sum(1,2)", new ValueCallback<String>() {
        @Override
        public void onReceiveValue(String value) {
            Toast.makeText(ViewPagerGalleryDemoActivity.this, "value = " + value, Toast.LENGTH_SHORT).show();
        }
    });

js代碼如下:

<script type="text/javascript">
    function sum(a,b){
    return a+b;
    }
    function do(){
    document.getElementById("p").innerHTML="hello world";
    }
</script>

3. js調(diào)用Android方法

需要在Android中定義javascriptinterface接口和聲明

  1. 首先要添加一個(gè)類和方法,并且用javascriptinterface

    public class TestJavaScriptInterface {
    @JavascriptInterface
    private String testJavaScriptInterface () {
    return "hello javascript"
    }
    }

  2. 打開javascriptinterface給h5的開關(guān)

     mWebView.addJavascriptInterface(new TestJavaScriptInterface(), "android");
    
  3. js代碼如下:

<script type="text/javascript">
function s(){
    //調(diào)用Java的back()方法
    var result =window.android.testJavaScriptInterface();
    document.getElementById("p").innerHTML=result;
}
</script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容