Android登录判断,并且在登录后跳转到相应的Activity
16lz
2022-03-19
工具类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 是个常量字符串, 想定义什么值都行
更多相关文章
- android mapview
- Android(Java):长时间未登录提醒
- android mapview
- android mapview
- android登录简单窗口
- 三方分享,登录
- Android手机访问web服务器(post请求)
- 自定义对话框
- android 布局随笔----用户登录界面