Android HTML与Android中的交互

参考:http://blog.csdn.net/it1039871366/article/details/46372207



在Android版本功能开发中遇到一个新的需求,在WebView的HTML中点击按钮或触发事件然后android客户端进行处理,如跳转Activity、请求接口等,刚开始听到这个需求有些懵,因为对于WebView的了解确实不够深入,没有丝毫头绪,只好求助百度,百度上看到了几篇博客,也就是关于WebView与js之间的交互,参考相关博客,完成了这次的需求。

 


Android端:

wv.getSettings().setJavaScriptEnabled(true);
        wv.addJavascriptInterface(mContext, "JavaScriptInterface");
        //设置 缓存模式
        wv.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
        // 开启 DOM storage API 功能
        wv.getSettings().setDomStorageEnabled(true);
        wv.setWebChromeClient(new MyWebViewClient());
        // 防止WebView自动启动浏览器
        wv.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                String headStr = "targeturl://";
                if (url.length() != 0 && url.startsWith(headStr)) {
                    int index = url.indexOf(headStr) + headStr.length();
                    //获得方法名
                    String targetUrl = url.substring(index);
                    targetDetail(targetUrl);
                    return true;
                } else {
                    view.loadUrl(url);
                    return super.shouldOverrideUrlLoading(view, url);
                }
            }

            @Override
            public void onReceivedError(WebView view, int errorCode,
                                        String description, String failingUrl) {
                // TODO Auto-generated method stub
//                super.onReceivedError(view, errorCode, description, failingUrl);
                rl_loadding.setVisibility(View.GONE);
                iv_loadding.clearAnimation();
                rl_reset.setVisibility(View.VISIBLE);
            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                rl_loadding.setVisibility(View.VISIBLE);
                iv_loadding.startAnimation(operatingAnim);
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                rl_loadding.setVisibility(View.GONE);
                iv_loadding.clearAnimation();
            }
        });


需要开启 setJavaScriptEnabled(true);

Html端:

var jumpContent=document.getElementById("jump611");jumpContent.οnclick=function(){ window.location.href="targeturl://https://www.baidu.com"; }


代码分析:

参考js交互完成此次需求,刚开始准备仿照交互案例,做出这样的功能,可项目除了Android客户端之外,还有ios版本,考虑到兼容问题,所以使用另一种办法,在js中进行link跳转,然后在android端中对跳转进行截取,匹配到字符串"targeturl://"后获取到后面写的参数,即"https://www.baidu.com",然后进行android端操作,如打开、如接受ActivityName,通过反射方法进行客户端内跳转、打开应用等等





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值