安卓微信分享 回调

来源:互联网 发布: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。第一次搞微信分享,还不知道这样的做法是否规范。望指正!




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 脸颊毛孔粗有黑头怎么办 鼻子上有黑头怎么办小窍门 脸上很多粉刺和油脂粒怎么办 毛孔里都是角栓怎么办 脸上长了很多脂肪粒怎么办 脸上全是油脂粒怎么办 外阴口长了疙瘩怎么办 外阴痒怎么办用什么洗 有子宫内膜增厚怎么办 脸上痘痘特别疼怎么办 眉间和下巴长痘怎么办 眼下方两边长斑怎么办 眼睛下面长斑了怎么办 24岁眼下有细纹怎么办 17岁眼下有细纹怎么办 眼下有细纹怎么办 知乎 22岁眼部有细纹怎么办 20岁眼角有细纹怎么办 20岁眼睛有细纹怎么办 29岁眼下有细纹怎么办 招不干净的东西怎么办 伤口旁边肿了怎么办啊 伤口痂掉了红肿怎么办 屁屁拉屎出血了怎么办 鞋小了一码怎么办妙招 长了毛周角化怎么办 孕妇拉不出来是怎么办 孕妇严重便秘拉不出来怎么办 10小孩肛裂出血怎么办 水痘结痂蹭掉了怎么办 水痘留下的黑印怎么办 水痘痂掉了有坑怎么办 出水痘留下的疤怎么办 宝宝出水痘抓破怎么办 水痘结痂碰掉了怎么办 结痂掉了有坑怎么办 水痘留下的红印怎么办 点痣留下的凹坑怎么办 得水痘留下坑了怎么办 脚磨破了化脓了怎么办 水痘被扣的破了怎么办