今天犯了一个很傻比的事儿,说出来都丢人,但是我还是想记录一下,敲代码一定不要马虎!
今天接微信分享,分享成功后在返回软件的时候
停留在了WXEntryActivity空白界面,可是我代码里已经监听回调finish掉了啊
看了下报错信息为
/MicroMsg.SDK.WXApiImplV10: handleIntent fail, ex = com.tencent.mm.opensdk.modelmsg.SendMessageToWX$Resp cannot be cast to com.tencent.mm.opensdk.modelmsg.SendAuth$Resp
SendMessageToWX.Resp无法转换成SendAuth.Resp
尼玛,因为分享是项目最新的要求,所以我之前在onResp方法里面resp.errCode为 BaseResp.ErrCode.ERR_OK时是这么写的
第三方授权发送的为SendAuth.Req,而微信分享的为SendMessageToWX.Req,微信分享回调解析的时候直接转换为SendAuth.Req导致这个错误的发生,这种低级的错误也能犯,我真是无地自容了。
下图为改后的代码
至此问题得以解决,自我检讨一下,不能马虎,不能因为对它的逻辑写了无数遍而忽视。
此外有一种原因会出现微信分享调用不起来的情况,这个是针对签名什么都没有错误的,分享一下。如果你的微信签名啥的都设置的没有错,但是分享死活调用不起来,可能是因为分享图片太大导致无法调用起微信客户端。
我的解决方案是将原本的bitmap压缩至成100*100的bitmap
public WXShareshareUrlBitMap(int flag,Context context,String url,String title,String descroption,Bitmap mBitmap ){
WXWebpageObject webpageObject =new WXWebpageObject();
webpageObject.webpageUrl = url;
WXMediaMessage msg =new WXMediaMessage(webpageObject);
msg.title = title;
msg.description = descroption;
Bitmap scaledBitmap = Bitmap.createScaledBitmap(mBitmap , 100, 100, true);
msg.setThumbImage(scaledBitmap);
SendMessageToWX.Req req =new SendMessageToWX.Req();
req.transaction = String.valueOf(System.currentTimeMillis());
req.message = msg;
req.scene = flag==0?SendMessageToWX.Req.WXSceneSession:SendMessageToWX.Req.WXSceneTimeline;
api.sendReq(req);
return this;
}
手头项目熬夜一周终于收尾,给自己鼓个掌,睡觉睡觉。