RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
你可能遇到了下面的问题
关闭右侧工具栏
android webview 调用微信分享
  • 作者:
  • 发表时间:2018-12-26 09:27
  • 来源:未知
以下小编整理了通过android webview开发调用微信开放平台的分享功能
1、申请微信开放平台的账号 并且获得appid

2、通过android集成webview并loadurl相关网址

3、在前端界面中 我们可以定义相关的事件通过scheme来调用android中的方法
例如
function callAndroid(arg1,arg2){
            document.location = "js://webview?arg1="+arg1+"&arg2="+arg2;
 
}

4、android端 我们再setwebviewclient中重写shouldOverrideUrlLoading
相关代码如下

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    // TODO Auto-generated method stub
    //返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器


    Uri uri = Uri.parse(url);
    // 如果url的协议 = 预先约定的 js 协议
    // 就解析往下解析参数
    if ( uri.getScheme().equals("js")) {

        // 如果 authority  = 预先约定协议里的 webview,即代表都符合约定的协议
        // 所以拦截url,下面JS开始调用Android需要的方法
        if (uri.getAuthority().equals("webview")) {

            //  步骤3:
            // 执行JS所需要调用的逻辑
            System.out.println("js调用了Android的方法");
            // 可以在协议上带有参数并传递到Android上
            HashMap<String, String> params = new HashMap<>();
            Set<String> collection = uri.getQueryParameterNames();
            String title = uri.getQueryParameter("arg1");
            String imgUrl = uri.getQueryParameter("arg2");

            share(title,imgUrl);

        }

        return true;
    }
    return super.shouldOverrideUrlLoading(view, url);

}

5、share方法如下 以下是分享图片到朋友圈
private void share(String title,String imgUrl) {

        final String img = imgUrl;
        //分享图片
        Bitmap thumb = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
        WXImageObject imgObj = new WXImageObject(thumb);
        final WXMediaMessage msg = new WXMediaMessage();
        msg.mediaObject = imgObj;
        msg.title = "标题";
        msg.description = "哎呦,不错哦";
        final Bitmap[] thumbBmp = {Bitmap.createScaledBitmap(thumb, 100, 100, true)};
        thumb.recycle();
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    InputStream imageStream = getImageStream(img);
                    Bitmap bitmap = BitmapFactory.decodeStream(imageStream);
                    msg.mediaObject = new WXImageObject(bitmap);
                    thumbBmp[0] = Bitmap.createScaledBitmap(bitmap, 100, 100, true);
                    bitmap.recycle();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                msg.thumbData = bmpToByteArray(thumbBmp[0], true);

                SendMessageToWX.Req req = new SendMessageToWX.Req();
                req.transaction = buildTransaction("img");
                req.message = msg;
                req.scene = SendMessageToWX.Req.WXSceneTimeline;
                iwxapi.sendReq(req);
            }
        }).start();
  



        finish();
    }
6、这样我们就能通过android嵌入网页 再通过网页调原生的微信分享 方便快捷!

如有什么疑问和需要可以咨询小编哦~~