欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android webview使用,js交互

程序员文章站 2024-02-05 20:52:46
...

内容简单,Android和h5的交互就是两种,一种Android调用h5方法,一种h5调用Android方法。直接上代码看的更直观,内容不多,不常用到,做个记录

Android端代码:

一、webview控件的属性设置。其中addJavascriptInterface 方法中,第二个参数name,这个name需要和h5中的name对应

        // 启用javascript
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient());
        webView.setWebChromeClient(new WebChromeClient());
        // 加载html
        webView.loadUrl("http://192.168.7.107:8848/video/html/diaoyong.html");
        //name:android在网页里面可以用window.name.方法名调用java方法
        webView.addJavascriptInterface(AdInfoActivity.this, "WebViewJavascriptBridge");

 h5中的name,我以这个url为例在浏览器中看它的代码找到了是这个:WebViewJavascriptBridge 

Android webview使用,js交互

二、Android调用h5方法

    用的是evaluateJavascript方法,其中JavaScript:obtain  里  obtain是与h5中提供被调用方法名一致。  str为我传给h5的内容,也可不传。

    //Android调用js
    public void obtain(String str){
        webView.evaluateJavascript("javascript:obtain('" + str + "')", new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String s) {
                ToastUtil.getInstance()._short(AdInfoActivity.this,s);
            }
        });
    }

三、h5调用Android方法

  方法一定要加@JavascriptInterface,叫share是因为要和h5中的方法一致,参数string,为h5调用Android时传过来的内容。

 方法内容在子线程中进行界面操作。

@JavascriptInterface
    public void share(final String parameter) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                ToastUtil.getInstance()._short(AdInfoActivity.this,"点击分享");

            }
        });
    }

完毕!  h5交互平时用的不多,写下来以作记录。