android WebView通过js方法与原生交互

根据WebView里面的链接字符串跳转Activity

 

activityBaseWebAddWebView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.startsWith(Url.urlHost + "/weixin/getJsp?url=wechatweb/business-member")) {//包含这个Url字符就跳转
            startActivity(new Intent(BusinessDetailWebActivity.this, My_BusMemberActivity.class).putExtra("url", url));
        }else if (url.startsWith(Url.urlHost + "/weixin/getJsp?url=wechatweb/crowdfund-info")) {
            startActivity(new Intent(BusinessDetailWebActivity.this, BusinessCrowdFoundingWebActivity.class).putExtra("url", url));
        } else if(url.startsWith("http://images.yxtribe.com/upload/images/business/")) {
            Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(webIntent);
        } else {
            url += "&appFlg=1";
            view.loadUrl(url);
        }
        return true;
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        view.getSettings().setJavaScriptEnabled(true);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        view.getSettings().setJavaScriptEnabled(true);
        super.onPageFinished(view, url);

        // 这段js函数的功能就是,遍历所有的img节点,并添加onclick函数,在还是执行的时候调用本地接口传递url过去
        view.loadUrl(CommonString.imgClickWithShowClass);
    }
});

1、webview与原生交互——根据js方法跳转到Activity

 

        activityBaseWebAddWebView.addJavascriptInterface(new WebViewJavaScriptFunction() {

            @Override
            public void onJsFunctionCalled(String tag) {
                // TODO Auto-generated method stub

            }
            @JavascriptInterface
            public void goToBusinessChatRoom() {
//            window.yxbl_app.toChat()  //js调用android源码方法,发起环信聊天
                if (TextUtil.isEmpty(groupid)){
                    Toast.makeText(getApplicationContext(), "该群不存在", Toast.LENGTH_SHORT).show();
                    return;
                }
                gotoliaotian();
            }

            @JavascriptInterface
            public void toCompanyDetail(String epId, String accessPath, String a) {//网页定义的方法名相同即可,同时可以传参数
//            window.yxbl_app.toCompanyDetail()  //js调用android源码方法
                Intent intent = new Intent(BusinessDetailWebActivity.this, CompanyDetailWebActivity.class);
                intent.putExtra("epId", Integer.parseInt(epId));
                intent.putExtra("accessPath", accessPath);
                startActivity(intent);
            }
            @JavascriptInterface
            public void BusinessVisit(int aid,String aname,String ac,String ap) {
//                Log.v("Lgq","newo[==="+aname);
//            window.yxbl_app.toCompanyDetail()  //js调用android源码方法
//                Intent intent = new Intent(BusinessDetailWebActivity.this, CompanyDetailWebActivity.class);
//                intent.putExtra("epId", Integer.parseInt(epId));
//                intent.putExtra("accessPath", accessPath);
//                startActivity(intent);
            }
            @JavascriptInterface
            public void openImage(String imageUrls, String img) {
                Intent intent = new Intent();
                intent.putExtra("imageUrls", imageUrls);
                intent.putExtra("curImageUrl", img);
                Log.v("lgq","tophoto===== "+img+".....  "+ imageUrls);
                intent.setClass(BusinessDetailWebActivity.this, PhotoBrowserActivity.class);
                startActivity(intent);
            }
            @JavascriptInterface
            public void gotoGongxu() {
                Intent intent = new Intent();
                intent.setClass(BusinessDetailWebActivity.this, GongXuActivity.class);
                startActivity(intent);
            }
            @JavascriptInterface
            public void gotoInvestment(String id) {
                Intent intent = new Intent();
                // web页面跳转投资列表
                intent.setClass(BusinessDetailWebActivity.this, GongXuActivity.class);
                startActivity(intent.putExtra("id", id));
            }
        }, CommonString.js2Android);
    }

 

2、原生与webview交互:changeColor是js方法,viewColor是参数

 

activityBaseWebAddWebView.loadUrl("javascript:changeColor('" + viewColor + "')");

 

附:自定义接口

 

/**
 * 作者:created by meixi
 * 邮箱:1085220040@qq.com
 * 日期:2019/7/22 09
 */
public interface WebViewJavaScriptFunction {

    void onJsFunctionCalled(String tag);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值