Android接入微信登录 handleIntent一直为false如何解决?

yjw1997 2019-05-24 07:33:05
如题 这是自定义Application里的代码

private void registToWX() {
mWxApi = WXAPIFactory.createWXAPI(this, WEIXIN_APPID, false);
// 将该app注册到微信
mWxApi.registerApp(WEIXIN_APPID);
}


这是登录页面里的

public void wxLogin() {
if (!BaseApp.mWxApi.isWXAppInstalled()) {
ToastUtils.showShort(mActivity,"您还未安装微信客户端");
return;
}
SendAuth.Req req = new SendAuth.Req();
req.scope = "snsapi_userinfo";
req.state = "wechat_sdk_xb_live_state";
BaseApp.mWxApi.sendReq(req);
}


这是WXEntryActivity

public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
private static final int RETURN_MSG_TYPE_LOGIN = 1;
private static final int RETURN_MSG_TYPE_SHARE = 2;
private static final String TAG = "WXEntryActivity";
public static String code;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

boolean handleIntent = BaseApp.mWxApi.handleIntent(getIntent(), this);

//下面代码是判断微信分享后返回WXEnteryActivity的,如果handleIntent==false,说明没有调用IWXAPIEventHandler,则需要在这里销毁这个透明的Activity;
if(!handleIntent){
Log.d(TAG, "onCreate: "+handleIntent);
finish();
}
}

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
BaseApp.mWxApi.handleIntent(intent, this);
}

// 微信发送请求到第三方应用时,会回调到该方法
@Override
public void onReq(BaseReq req) {
Log.v(TAG, "onReq: ");
finish();
}

// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
//app发送消息给微信,处理返回消息的回调
@Override
public void onResp(BaseResp resp) {
Log.v(TAG,resp.errStr);
Log.v(TAG,"错误码 : " + resp.errCode + "");
switch (resp.errCode) {
case BaseResp.ErrCode.ERR_AUTH_DENIED:
case BaseResp.ErrCode.ERR_USER_CANCEL:
if (RETURN_MSG_TYPE_SHARE == resp.getType()) ToastUtils.showShort(WXEntryActivity.this,"分享失败");
else ToastUtils.showShort(WXEntryActivity.this,"登录失败");
break;
case BaseResp.ErrCode.ERR_OK:
switch (resp.getType()) {
case RETURN_MSG_TYPE_LOGIN:
code = ((SendAuth.Resp) resp).code;
Log.v(TAG,"code = " + code);
finish();
break;
case RETURN_MSG_TYPE_SHARE:
ToastUtils.showShort(WXEntryActivity.this,"微信分享成功");
finish();
break;
}
break;
}
}
}


有木有大佬知道是什么问题?

...全文
788 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Livart_Corp 2019-08-17
  • 打赏
  • 举报
回复
引用 7 楼 xuan52rock 的回复:
引用 6 楼 Livart_Corp 的回复:
不管true还是false都不行啊,快急死了,怎么弄都不行
你的问题解决了吗,我也遇到同样的问题
去看我发的博客,可以解决
xuan52rock 2019-08-12
  • 打赏
  • 举报
回复
引用 6 楼 Livart_Corp 的回复:
不管true还是false都不行啊,快急死了,怎么弄都不行
你的问题解决了吗,我也遇到同样的问题
Livart_Corp 2019-06-30
  • 打赏
  • 举报
回复
不管true还是false都不行啊,快急死了,怎么弄都不行
yjw1997 2019-05-27
  • 打赏
  • 举报
回复
引用 3 楼 乂曱酱 的回复:
我好像遇到过这个问题,但是忘了在哪。。。。 你先把获取api mWxApi = WXAPIFactory.createWXAPI(this, WEIXIN_APPID, true); 最后的这个参数改成true看看。 其次就是你可以在你的WXEntryActivity这个类里面 再注册一遍api,写在handleIntent之前。 mWxApi = WXAPIFactory.createWXAPI(this, WEIXIN_APPID, false); // 将该app注册到微信 mWxApi.registerApp(WEIXIN_APPID);
false改为true就可以了 多谢
乂曱酱 2019-05-27
  • 打赏
  • 举报
回复
然后WXEntryActivity你就直接引用当前类的api试试

不用引用application的了
乂曱酱 2019-05-27
  • 打赏
  • 举报
回复
我好像遇到过这个问题,但是忘了在哪。。。。


你先把获取api mWxApi = WXAPIFactory.createWXAPI(this, WEIXIN_APPID, true); 最后的这个参数改成true看看。


其次就是你可以在你的WXEntryActivity这个类里面
再注册一遍api,写在handleIntent之前。

mWxApi = WXAPIFactory.createWXAPI(this, WEIXIN_APPID, false);
// 将该app注册到微信
mWxApi.registerApp(WEIXIN_APPID);

乂曱酱 2019-05-27
  • 打赏
  • 举报
回复
第三方开发者如果使用透明界面来实现WXEntryActivity,需要判断handleIntent的返回值,如果返回值为false,
则说明入参不合法未被SDK处理,应finish当前透明界面,避免外部通过传递非法参数的Intent导致停留在透明界面,引起用户的疑惑


王能 2019-05-27
  • 打赏
  • 举报
回复
不知道你的问题出现在哪,你可以直接debug到微信的sdk里面看看走了什么逻辑

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧