随记9——Android和H5交互


女神镇楼

时间紧,不说废话了。

1、设置WebView支持js

settings.setJavaScriptEnabled(true);

2、添加js接口

wv_view.addJavascriptInterface(new JSInterface(), "Android");

3、为WebView设置Client

        wv_view.setWebChromeClient(new WebChromeClient());
        wv_view.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
                //返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器
                view.loadUrl(url);
                return true;
            }
        });

4、和h5定义接口方法譬如

 private class JSInterface {
        //JS需要调用的方法
        @JavascriptInterface
        public void onClickBack(String id){
             //返回
            H5Activity.this.finish();
        } 
}
5、Android调用H5

        //有返回值
        wv_view.evaluateJavascript("javascript:getimg()", new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String value) {
                ToastUitl.showShort(value);
            }
        });

        String jsStr = "javascript:geTimg(\"" + sb.toString() + "\")";//有参数
        wv_view.loadUrl(jsStr);
//        wv_view.loadUrl("javascript:getimg()");//没参数

注意:js方法里的参数,别忘了""。还有一点要非常注意的是:一定要在UI线程中调用!可以用Handler或者runOnUiThread方法处理。
注意:js方法里的参数别忘了""。还有一点要非常注意的是:一定要在UI线程调用!可以使用Handler或者runOnUIThread方法处理。我这边有一个情况是:当h5有多层页面时,js要写在页面上才会被调用到。这可能是个坑~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值