微信分享的两个问题
来源:互联网 发布:火狐不支持java 编辑:程序博客网 时间:2024/05/18 02:23
最近在做一个简单的微信分享功能,中间遇到了两个问题:
1.微信回调问题:
要想获取微信分享的结果,必须在自己的项目下新建包名wxapi,新建WXEntryActivity(名字必须是这个)实现IWXAPIEventHandler接口,重写onResop()方法。如下:
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {...@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.entry);// 通过WXAPIFactory工厂,获取IWXAPI的实例 api = WXAPIFactory.createWXAPI(this, Constants.APP_ID); api.handleIntent(getIntent(), this); }@Overridepublic void onReq(BaseReq req) {}// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法@Overridepublic void onResp(BaseResp resp) {}
微信会自动回调onResop()方法。微信demo里的代码是这样的:
public void onResp(BaseResp resp) { int result = 0; switch (resp.errCode) { case BaseResp.ErrCode.ERR_OK: result = R.string.errcode_success; break; case BaseResp.ErrCode.ERR_USER_CANCEL: result = R.string.errcode_cancel; break; case BaseResp.ErrCode.ERR_AUTH_DENIED: result = R.string.errcode_deny; break; default: result = R.string.errcode_unknown; break; } Toast.makeText(this, result, Toast.LENGTH_LONG).show(); finish(); }
然而手贱的我在switch{}前面加了两行log打印,虽然会执行方法,但是log打印完就不往下执行,直接跳到onCreate()中的api.handleIntent(getIntent(), this)这行。
最后把那两行打印删除之后就好了。
什么原因我也不太清楚,还请知道的大神帮我解答一下……
2.在app的activity中点击分享给好友调出微信好友选择界面后直接点击返回键导致app刚才所处的那个activity也被finish。
这个发现是back键的ACTION-UP事件传递到了app的activity中,结果就悲剧了……
我们可以在这个activity中重写onKeyUp()方法:
@Overridepublic boolean onKeyUp(int keyCode, KeyEvent event) { return true;}
以上两个问题是我在做的时候遇到的,写下来以防自己以后再遇到这些问题,也希望能帮助到一些小伙伴。
如果有知道出现这两个问题原因或者有更好解决办法的大神,还请不吝指教!谢谢!
———————————————————————————————————————————————————
分割线
———————————————————————————————————————————————————
之前没有管过这个,偶然发现的,在分享时有一个生成唯一标识的方法,刚开始也不了解这个有什么用,如下:
private String buildTransaction(final String type) { return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();}在分享时会调用这个方法,将返回值作为 SendMessageToWX.Req对象req的一个属性值,即:
req.transaction = buildTransaction("text");
后来才知道,这个标识text和WXEntryActivity的onResp(BaseResp resp)方法中的resp对象中的transaction属性值是对应的:// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法@Overridepublic void onResp(BaseResp resp) { int result = 0; switch (resp.errCode) { case BaseResp.ErrCode.ERR_OK: result = R.string.errcode_success; break; case BaseResp.ErrCode.ERR_USER_CANCEL: result = R.string.errcode_cancel; break; case BaseResp.ErrCode.ERR_AUTH_DENIED: result = R.string.errcode_deny; break; default: result = R.string.errcode_unknown; break; } Toast.makeText(this, result, Toast.LENGTH_LONG).show();Log.i("transaction", resp.transaction);
}}
打印出来的值即是之前设置的text+用户点击分享时所对应时间的毫秒数。
——————————————————————————————————————————————————
20160822
后来又发现了一个微信分享的问题。
由于分享到朋友圈的操作要微信4.2以后的版本才支持,所以在分享前会做微信版本的检查。但是在安卓6.0系统上,会获取不到正确的版本号(获取到的好像是0吧)。我自己在写的时候遇到了这个问题,然后在大众点评上偶然也发现了这个问题(大众点评应该用的JS_SDK)。不知道这是不是微信分享的一个bug呢……
- 微信分享的两个问题
- 微信分享的问题
- 微信分享的问题
- 微信分享问题
- ShareSDK 微信分享注意的问题
- shareSDK的微信分享失败问题
- 集成微信遇到的两个问题
- 微信支付和微信分享打包的问题
- 微信分享 签名问题
- 微信分享keystore问题
- android 微信分享问题
- android 微信分享问题
- 微信js_sdk的分享功能的问题
- ios关于微信分享图片失效的问题
- 微信SDK分享出现的各种问题
- 【微信混淆】微信新的jar混淆无法分享问题
- 对于接入微信分享遇到的问题总结
- Android微信SDK分享需要注意的问题
- {html5} webgl下面跨域拉取图片的问题
- "lambda"和“bind”的初步思考
- java 通过流的方式读取远程图片并显示在jsp页面(类型以jpg、png等结尾的图片)
- linux下错误修改了/etc/profile导致虚拟机无法登录
- Unity3d面试4
- 微信分享的两个问题
- java--数据结构--二叉树的最近公共祖先
- 平台免费接口,非常实用
- DEV express 控件 在 XE2下 无法编译,说没有dcu文件
- 自定义buttonView的酷炫效果
- .Net语言 APP开发平台——Smobiler学习日志:用Gridview控件设计较复杂的表单
- ActionContext与ServletActionContext
- activity进入动画
- 卷积神经网络