安卓微信分享 回调
来源:互联网 发布:ev3编程软件中文版 编辑:程序博客网 时间:2024/05/22 18:23
最近需要对一些Activity进行微信分享,分享数据包括小图标,图标右侧的推荐语,点击该分享跳转到对于的M页面,分享成功之后返回到当前Activity,同时需要根据用户是否成功进行分享而进行相应操作。
参考了一下微信SDK文档,地址如下:http://open.weixin.qq.com/zh_CN/htmledition/res/dev/document/sdk/wp8/class_micro_msg_1_1sdk_1_1_base_resp.html
这个地址指向的是微信分享后返回的resp数据结构。
新一些的版本可以看这个:http://open.weixin.qq.com/zh_CN/htmledition/res/dev/document/sdk/android/index.html
首先我们先来看下整个分享的过程:
客户端 -----req--------> 微信 -------resp-------> 客户端
这里我们先看req
分享信息(简单的图片+推荐语+附带Url链接)这里采用了SendMessageToWX.Req
主要参数为message,scene,transaction。对应作用图中详细描述了。
业务所需要分享的内容主要都封装在massage中,根据自己的需要,可以创建对于的数据类,WXAppExtendMessage、WXBaseMessage、WXImageMessage、WXMediaMessage……
就拿WXMediaMessage举例实现上述三个分享,成员变量中,title存放标题,description用于存放推荐语,mediaObject用于存放Url,thumbData存放图片
WXWebpageObject webPageObj = new WXWebpageObject();webPageObj.webpageUrl = "http://blog.csdn.net/qq_22260247/article/";WXMediaMessage wxMsg = new WXMediaMessage();wxMsg.mediaObject = webPageObj;wxMsg.title = "flycgu";wxMsg.description = "still learning";wxMsg.thumbData = 二进制图片文件;……(其他参数可以看上面文档链接)SendMessageToWX.Req req = new SendMessageToWX.Req();req.transaction = 对应请求的事务ID,通常由Req创建,回复Resp时应填入对应事务ID;req.message = wxMsg;req.scene = 发送的目标场景;IWXAPI api = WXAPIFactory.createWXAPI(context, 向微信注册的ID, true);api.sendReq(req);
一些常用的方法,包括向微信注册,检测是否安装微信,是否支持分享等
api.registerApp(ID);
iwxapi.isWXAppInstalled();
iwxapi.isWXAppSupportAPI();
成功组装数据发送req请求之后,下面搞定回调部分
1. 在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,该类继承自Activity,并在manifest文件里面加上exported属性,设置为true。
2. 实现IWXAPIEventHandler接口,微信发送的请求将回调到onReq方法,发送到微信请求的响应结果将回调到onResp方法。
3. 在WXEntryActivity中将接收到的intent及实现了IWXAPIEventHandler接口的对象传递给IWXAPI接口的handleIntent方法。当微信发送请求到你的应用,将通过IWXAPIEventHandler接口的onReq方法进行回调,类似的,应用请求微信的响应结果将通过onResp回调。
在这里,我在onResp方法中进行回调成功处理。@Override public void onResp(BaseResp resp) { switch (resp.errCode) { case BaseResp.ErrCode.ERR_OK: Toast.makeText(WXEntryActivity.this, "分享成功", Toast.LENGTH_SHORT).show(); handleWXResp(resp);//处理成功结果 break; case BaseResp.ErrCode.ERR_USER_CANCEL: Toast.makeText(WXEntryActivity.this, "分享取消", Toast.LENGTH_SHORT).show(); break; case BaseResp.ErrCode.ERR_AUTH_DENIED: Toast.makeText(WXEntryActivity.this, "分享拒绝", Toast.LENGTH_SHORT).show(); break; default: break; } finish(); }因为所有地方分享回调都走到这里,如何区分是我那个业务呢?随后参考resp中的参数,可以用的是transaction,这个参数是我们在req传入,微信透传返回过来,可以用来区分对于的业务。
为了整体结构,处理成功结果我这里才用了广播的方式。
req.transaction = 对应请求的事务ID,通常由Req创建,回复Resp时应填入对应事务ID;编译调试,成功走到handleWXResp(resp),resp中的transaction也是我req中传入的值。关于后续的广播方式,可以参考我转的文章,有普通的Broadcast,也有针对app内部的LocalBroadcastManager,后者不需要权限参数,只需要action。第一次搞微信分享,还不知道这样的做法是否规范。望指正!
- 安卓微信分享 回调
- 安卓微信分享流程
- 分享
- 分享
- 分享。。。。
- 分享
- 分享
- 分享
- 分享
- 分享
- 分享
- 分享
- 分享
- 分享
- 分享
- 分享
- 分享
- 分享
- mini_httpd,CGI 是什么
- 初始化list和map时就给它赋值
- C/C++不同文件夹下包含头文件的方法及#include的使用
- Discuz!X2 附件分表与主题图片表解析
- TCP连接状态详解
- 安卓微信分享 回调
- HtmlAgilityPack的简单使用
- C# 同一应用程序域不同线程之间的参数传递方式
- HDU4901 The Romantic Hero
- Unity3D Quaternion各属性和函数测试
- Spark的协同过滤.Vs.Hadoop MR
- 第十一周项目2-求最大公约数
- 第十一周项目二 四个数的最大公约数
- 好教程不来一发——Photoshop通道抠像