微信官方无法保证双开应用的稳定性,所以并没有给微信登录的取消情况设置回调,但是可能有些同学的部分需求需要用到这个微信登录的取消去进行某些操作,这时,我们就需要一些手段来实现,
Android中有一个生命周期叫onResume(),在页面重新变得可见的时候会进行一次调用我们只需要在onResume中进行一些判断(不一定是Android,大部分平台都有这种类似的生命周期函数,同理即可),首先定义一个全局变量
private int flag = 1;
然后再onResume()回调中加上
@Override
protected void onResume() {
super.onResume();
if (flag % 2 == 0) {
//编写你需要进行的操作,比如finish当前页面等操作
}
flag += 1;
}
onResume在用户一进入页面的时候会调用一次,当用户的微信双开弹窗被用户取消掉以后,onResume又会调用一次,这时就等同于用户取消了本次登录,那同学们看到这可能又有疑问了,同学1:老师,那就算用户不是取消微信登录,他在微信登录成功的回调中完成某些操作后也可能导致这个onResume的触发呀,这位同学说的没错,所以,我们这时最关键的一步来了,在微信的官方回调用让flag - 1
@Override
public void onResp(BaseResp resp) {
// 收到回调时,将flag-1
flag -= 1;
if (resp instanceof SendAuth.Resp) {
SendAuth.Resp authResp = (SendAuth.Resp) resp;
//不做过多展示
这时,就不会让其他操作影响这个微信取消登录的判断了
(实际情况可能略有不同,可根据该思路进行修改即可,有问题请补充)