判断栈顶Activity,并关闭指定,用于解决微信bug

2,039 阅读1分钟

工具方法

public static boolean isNeedRestart(Context context) {

        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
        if (!tasks.isEmpty()) {
            ComponentName topActivity = tasks.get(0).topActivity;
            if (topActivity.getPackageName().equals(context.getPackageName())) {
                // 若当前栈顶界面是AssistActivity,则需要手动关闭
                if ("com.tencent.connect.common.AssistActivity".equals(topActivity.getClassName())) {
                    return true;
                }
            }

            if ("com.tencent.mobileqq".equals(topActivity.getPackageName())) {
                // 若当前栈顶界面是AssistActivity,则需要手动关闭
                if ("com.tencent.mobileqq.activity.ForwardRecentActivity".equals(topActivity.getClassName())) {
                    return true;
                }
            }
        }
        return false;
    }

activity onStart中执行

if (SNSUtils.isNeedRestart(this)) {//解决QQ分享返回以后 无响应问题
            startActivity(Intent(this, StudyLengthActity::class.java)
                    .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
            )
        }

注意 QQ的Scheme写错也容易造成分享后无法返回本应用的问题