Android打开界面时判断是否登录,未登录跳转登录界面,登录完成后直接跳转要打开的界面

跳转时调用的方法。
实现思路是未登录的话创建一个跳转到登录界面的ComponentName,替换掉Intent中原来的ComponentName,把要跳转的目标className取出来传递到登录界面。注意,这里只能替换Intent内的ComponentName,而不能重新创建一个新的Intent,因为运来的Intent可能是有需要传递的数据的,重新创建的话原来Intent内的数据会丢失。

 public void startActivityAfterLogin(Intent intent) {
        //未登录(这里用自己的登录逻辑去判断是否未登录)
        if (!UserManager.getInstance().isLogin()) {
            ComponentName componentName = new ComponentName(getContext(), LoginActivity.class);
            intent.putExtra("className", intent.getComponent().getClassName());
            intent.setComponent(componentName);
            super.startActivity(intent);
        } else {
            super.startActivity(intent);
        }
 }

登录界面的方法。
登录成功后调用此方法,用Class.forName将传过来的className转换成Class,跟上个跳转同理,不能创建新的Intent而是要用原来的Intent保证数据正确传递。

private void startActivity() {
        if (getIntent().getExtras() != null && getIntent().getExtras().getString("className") != null) {
            String className = getIntent().getExtras().getString("className");
            getIntent().removeExtra("className");
            if (className != null && !className.equals(getContext().getClass().getName())) {
                try {
                    ComponentName componentName = new ComponentName(getContext(), Class.forName(className));
                    startActivity(getIntent().setComponent(componentName));
                } catch (ClassNotFoundException e) {
                    e.printStackTrace();
                }
            }
        }
        finish();
    }

你可能感兴趣的:(Android)