Android JS与android 交互

最近在项目中用友盟分享,分享内容涉及到android和JS的方法调用。
JS端调用android方法的代码

window.AndroidWebView.wxTL(share.qrcode);
window.AndroidWebView.wxA(share.qrcode);
window.AndroidWebView.wxS(encodeURI(shareUrl));

share.qrcode encodeURI(shareUrl) 都是string类型的参数 android ,在JS调用android方法时传入
对webview设置

    WebSettings webSettings = mWebView.getSettings();

    //设置可以访问文件
    webSettings.setAllowFileAccess(true);
    //支持缩放
    webSettings.setBuiltInZoomControls(true);
    //设置使用缓存        webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);


    //设置web view属性,能执行Javascript脚本
    webSettings.setJavaScriptEnabled(true);

    mWebView.addJavascriptInterface(new JavaScriptinterface(getActivity()),"AndroidWebView");

    mWebView.loadUrl(URL);
    mWebView.setWebViewClient(new RWebViewClient());

自定义JavaScriptinterface并对JS调用的方法添加 @JavascriptInterface;需要注意的是JS调用android的方法与JavaScriptinterface内需要被调用的方法参数要一致。

class JavaScriptinterface {
  
    public JavaScriptinterface() {
   
    }

    //分享到朋友圈
    @JavascriptInterface
    public void wxTL(String share){
        UMImage image = new UMImage(getActivity(),toOneBitmap(share));
        new ShareAction(getActivity())
                .withMedia(image)
                .setPlatform(SHARE_MEDIA.WEIXIN_CIRCLE)
                .setCallback(this)
                .share();

    }

    //分享给好友
    @JavascriptInterface
    public void wxA(String share){

        UMImage image = new UMImage(getActivity(),toOneBitmap(share));
        new ShareAction(getActivity())
                .withMedia(image)
                .setPlatform(SHARE_MEDIA.WEIXIN)
                .setCallback(this)
                .share();

    }

    //分享文章
    @JavascriptInterface
    public void wxS(String share){
        handler.sendEmptyMessage(0x01);
        shareArticalUrl = share;
    }

}

【链接】Android-webview和js互相调用
https://www.cnblogs.com/bigIndex/p/5981643.html

【链接】Android与JavaScript方法相互调用
http://aichixihongshi.iteye.com/blog/1183220

你可能感兴趣的:(Android JS与android 交互)