上一篇手记介绍了一些关于微信应用申请,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,如果不给它赋值,该对话框无法弹出,分享会失败。
未完待续……
热门评论
我想问一下,为什么我按照你的步骤但是还是不能实现呢?
求回复啊,大神!!!!!!!!!!!!!!!!!