android官方微信分享,Android微信分享的成功但报错

在app里加入微信分享的功能,之前还是没问题的,但现在发现在一些机型上

(1)点击分享给好友后,选择返回应用则报错,但它是发送成功的

(2)点击分享到朋友圈后就报错,同样它也是发送成功的

(ActivityA —— ActivityB(Fragment) —— 点击分享 ————分享成功 ————报错 ————ActivityA)

即分享成功后,它应该是返回到ActivityB的Fragment页面的。

请问是出了什么问题,做分享的功能跟WXEntryActivity有关吗,因为我的WXEntryActivity里是有用于处理微信用户登录的?

bVrgKv

分享代码

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

switch (v.getId()) {

//分享给微信好友

case R.id.weChat_friends:{

//构建链接信息的分享对象

WXWebpageObject webpageObject = new WXWebpageObject();

webpageObject.webpageUrl = shareUrl;

//将webpageObject分装到WXMediaMessage里

WXMediaMessage mediaMessage = new WXMediaMessage();

mediaMessage.mediaObject = webpageObject;

mediaMessage.description = description ;

mediaMessage.setThumbImage(bitmap);

//构建发送请求

SendMessageToWX.Req req = new SendMessageToWX.Req();

//设置发送场景为分享给微信好友

req.scene = SendMessageToWX.Req.WXSceneSession;

//设置该事务为唯一事务(因为时间只有一个)

req.transaction = String.valueOf(System.currentTimeMillis());

//将封装好的WXMediaMessage再封装给SendMessageToWX.Req

req.message = mediaMessage;

//通过IWXAPI发送请求

MyApplication.api.sendReq(req);

break;

}

//分享到微信朋友圈

case R.id.weChat_TimeLine:{

WXWebpageObject webpageObject = new WXWebpageObject();

webpageObject.webpageUrl = shareUrl;

WXMediaMessage mediaMessage = new WXMediaMessage();

mediaMessage.mediaObject = webpageObject;

mediaMessage.title = title;

mediaMessage.setThumbImage(bitmap);

SendMessageToWX.Req req = new SendMessageToWX.Req();

req.scene = SendMessageToWX.Req.WXSceneTimeline;

req.transaction = String.valueOf(System.currentTimeMillis());

req.message = mediaMessage;

MyApplication.api.sendReq(req);

break;

}

default:

break;

}

}

WXEntryActivity里关于ERR_OK处理的代码,这里只是对微信用户做了操作,只是获取到该用户的相关信息

public void onResp(BaseResp arg0) {

switch (arg0.errCode ) {

//同意授权

case BaseResp.ErrCode.ERR_OK:

SendAuth.Resp resp = (Resp) arg0;

//获得code

String code = resp.code;

//把code,APPID,APPSECRET替换到要请求的地址里,成为新的请求地址

newGetCodeRequest = getCodeRequest(code);

//请求新的地址,解析相关数据,包括openid,acces_token等

HttpUtil.sendHttpRequest(newGetCodeRequest , new HttpCallbackListener() {

@Override

public void onFinish(String response) {

//Log.d("WXActivity", response);

parseAccessTokenJSON(response);

//将解析得到的access_token和openid在请求unionid地址里替换

newGetUnionIDRequest = getUnionID(mAccess_token, mOpenId);

//请求新的unionid地址,解析出返回的unionid等数据

HttpUtil.sendHttpRequest(newGetUnionIDRequest , new HttpCallbackListener() {

@Override

public void onFinish(String response) {

parseUnionIdJson(response);

}

@Override

public void onError(Exception e) {

}

});

}

@Override

public void onError(Exception e) {

// TODO Auto-generated method stub

}

});

// new Thread(new Runnable() {

// @Override

// public void run() {

// // TODO Auto-generated method stub

// try {

// Thread.sleep(1000);

// } catch (InterruptedException e) {

// // TODO Auto-generated catch block

// e.printStackTrace();

// }

// WXEntryActivity.this.finish();

// }

// }).start();

Timer timer = new Timer();

TimerTask task= new TimerTask() {

@Override

public void run() {

// TODO Auto-generated method stub

WXEntryActivity.this.finish();

}

};

timer.schedule(task, 2000);

break;

}

感谢 有明 的解答,这是修改后的部分代码:

@Override

public void onResp(BaseResp arg0) {

//关于数值的类型,微信官方文档里有写:

//发送OpenAPI Auth验证 的数值为 1

//分享消息到微信 的数值为2

if(arg0.getType() == 2){

finish();

}

if(arg0.getType() == 1){

SendAuth.Resp respLogin = (Resp) arg0;

//获得code

String code = respLogin.code;

switch (arg0.errCode ) {

//同意授权

case BaseResp.ErrCode.ERR_OK:

。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值