为了账号安全,请及时绑定邮箱和手机立即绑定

实现基于微信SDK的微信多功能分享实例(二):微信分享机制

标签:
Android

上一篇手记介绍了一些关于微信应用申请,SDK的导入,以及项目环境搭建的注意事项,从这篇手记开始,将是真正的开始学习微信分享的知识了。

从微信开放平台的关于微信分享与收藏的开发者文档中看到,微信分享支持五种类型的内容分享,包括:

文字,图片,音乐,视频,网页

支持将该内容分享到微信的三种场景中,包括:

微信好友会话,朋友圈,添加到微信收藏

图片描述

在这里写一些我对微信分享机制的一些小总结,上图是微信分享的一个流程,

1.对于支持分享的五种类型,SDK中分别提供了五个类WXTextObject,WXImageObject,WXMusicObject,WXVideoObject,WXWebpageObject,用于封装我们要分享的内容。
2.之后要用WXMediaMessage来进行进一步的封装,将上述五种类的对象赋值给该对象的mediaObject变量,这里还有一个重要的变量description,用于整个message的描述,必须要为它赋值,否则分享会失败(之后会介绍具体情况)
3.将封装好的WXMediaMessage作为参数传给 Req的message变量,同时指定Req的scene属性,包括WXSceneSession(好友),WXSceneTimeline(朋友圈),WXSceneFavorite(我的收藏),我们可以看到在Req的类里就将五种类型与三种场景联系在一起了。
4.最后由IWXPAI 调用sendReq(),参数为Req对象,将我们的第三方app与微信进行关联

之前我已经创建好了一个项目,完成了所有的准备工作,在这篇手记中针对文字分享进行代码编写,测试其实际的效果。在下一篇手记中会介绍其他的四种类型。
定义一个按钮,点击按钮进行分享

定义一个按钮,点击按钮进行分享

为了方便,我在这里就固定文字进行分享,代码如下:

private String text = "这是一条正正经经的微信文字分享";
private String []single_list = {"微信好友","朋友圈","我的收藏"};
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {       
    @Override
    public void onClick(View arg0) {
        //弹出单选对话框,选择分享的场景
        AlertDialog.Builder builder = new Builder(MainActivity.this);           
        builder.setSingleChoiceItems(single_list, 0, new DialogInterface.OnClickListener() {        
            @Override
            public void onClick(DialogInterface arg0, int which) {
                //初始化WXTextObject的对象,将要分享的文字直接作为构造函数的参数
                WXTextObject textObj = new WXTextObject(text);
                //用WXTextObject对象初始化WXMediaMessage对象,实现再封装
                WXMediaMessage msg = new WXMediaMessage();
                msg.mediaObject = textObj;
                //description是这个消息展示的一个描述
                msg.description = "分享文字";
                //构造一个Req
                SendMessageToWX.Req req = new Req();
                req.message = msg;
                //transaction作为一个请求的唯一标识,必须进行赋值
                req.transaction = "text";
                //根据单选对话框的选择来设置req.scene
                switch (which) {
                case 0:
                    req.scene = Req.WXSceneSession;
                    break;
                case 1:
                    req.scene = Req.WXSceneTimeline;
                    break;
                case 2:
                    req.scene = Req.WXSceneFavorite;
                    break;
                }
                //调用api接口将数据发送给微信
                api.sendReq(req);
            }
        });
        builder.setNegativeButton("完成", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int arg1) {
                dialog.dismiss();
            }
        });
        AlertDialog dialog = builder.create();
        dialog.show();
    }
});

接下来看一下实际运行的效果:

分享给微信好友

图片描述
图片描述
图片描述
图片描述

分享到朋友圈

图片描述
图片描述

添加到收藏

图片描述
图片描述

从发送给好友和收藏中可以看到,在跳转到微信后,会弹出对话框上面有WXMediaMessage,显示他的description,如果不给它赋值,该对话框无法弹出,分享会失败。

未完待续……

点击查看更多内容
6人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
移动开发工程师
手记
粉丝
24
获赞与收藏
198

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消