工具类1:LoginCarrier.java

import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.os.Parcel;import android.os.Parcelable; /** * 登录器载体 */public class LoginCarrier implements Parcelable {    public String mTargetAction;    public Bundle mbundle;    protected LoginCarrier(Parcel in) {        mTargetAction = in.readString();        mbundle = in.readBundle(Bundle.class.getClassLoader());    }    /**     * 重新构造函数  用于传参     * @param target 目标activity     * @param bundle 向目标传递的参数     */    public LoginCarrier(String target, Bundle bundle) {        mTargetAction = target;        mbundle = bundle;    }    @Override    public int describeContents() {        return 0;    }    /**     * 通过writeToParcel将你的对象映射成Parcel对象     * @param dest     * @param flags     */    @Override    public void writeToParcel(Parcel dest, int flags) {        dest.writeString(mTargetAction);        dest.writeBundle(mbundle);    }    /**     * 已经登录的状态下执行的方法     * @param ctx     */    public void invoke(Context ctx) {        Intent intent = new Intent();        intent.setClassName(ctx, mTargetAction);        if (mbundle != null) {            intent.putExtras(mbundle);        }        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);        ctx.startActivity(intent);    }    public static final Creator CREATOR = new Creator() {        @Override        public LoginCarrier createFromParcel(Parcel in) {            return new LoginCarrier(in);        }        @Override        public LoginCarrier[] newArray(int size) {            return new LoginCarrier[size];        }    };}

工具类2:LoginInterceptor.java

import android.content.Context;import android.content.Intent;import android.os.Bundle;import com.nativeTools.Config;import com.vipcio.activity.LoginActivity;/** * 登录判断类 */public class LoginInterceptor {    // 这里获取登录状态    private static boolean getLogin() {        return Config.API.is_login;    }    /**     * @param ctx 当前activity的上下文     * @param target 目标activity     * @param bundle 需要传递的参数     * @param intent     */    public static void interceptor(Context ctx, String target, Bundle bundle, Intent intent) {        if (target != null && target.length() > 0) {            LoginCarrier invoker = new LoginCarrier(target, bundle);            if (getLogin()) {                invoker.invoke(ctx);            }else{                if (intent == null) {                    intent = new Intent(ctx, LoginActivity.class);                    intent.putExtra(Config.API.loginInterceptorInvoker, invoker);                }                intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);                ctx.startActivity(intent);            }        }    }    public static void interceptor(Context ctx, String target, Bundle bundle) {        interceptor(ctx, target, bundle, null);    }}

跳转拦截使用:

Bundle bun = new Bundle();bun.putString("name","大黑");LoginInterceptor.interceptor(activity, "目标Activity的名字", bun);

登录成功后的操作:

LoginCarrier invoker = (LoginCarrier) getIntent().getParcelableExtra(Config.API.loginInterceptorInvoker);invoker.invoke(LoginActivity.this);finish();

总结:

注意 Config.API.loginInterceptorInvoker  是个常量字符串, 想定义什么值都行

更多相关文章

  1. android mapview
  2. Android(Java):长时间未登录提醒
  3. android mapview
  4. android mapview
  5. android登录简单窗口
  6. 三方分享,登录
  7. Android手机访问web服务器(post请求)
  8. 自定义对话框
  9. android 布局随笔----用户登录界面

随机推荐

  1. Android(安卓)打开PDF,PPT,WORD,EXCEL,CH
  2. 使用Android(安卓)Stdio出现':app:transf
  3. Android TextView的marquee跑马灯无效的
  4. Android AIDL跨进程通讯
  5. Android LruCache使用分析
  6. Android 处理多线程 UserTask
  7. Android SDK API 13升级指南
  8. Android下的数据储存方式(三)
  9. android学习——EditText的属性
  10. android Activity加载完成后的监听事件