@Interceptor(priority = 1)
public class LoginInterceptor implements IInterceptor {
private static final String TAG = "LoginInterceptor";
private Context mContext;
@Override
public void process(Postcard postcard, InterceptorCallback callback) {
Log.i(TAG, "LoginInterceptor 开始执行");
//给需要跳转的页面添加值为Constant.LOGIN_NEEDED的extra参数,用来标记是否需要用户先登录才可以访问该页面
//先判断需不需要
if(postcard.getExtra() == Constant.LOGIN_NEEDED){
boolean isLogin = App.getSharedPreferences().getBoolean(Constant.IS_LOGIN,false);
Log.i(TAG, "是否已登录: " + isLogin);
//判断用户的登录情况,可以把值保存在sp中
if (isLogin) {
callback.onContinue(postcard);
}else {//没有登录,注意需要传入context
ARouter.getInstance().build(RouterPath.LOGIN_ACTIIVTY).navigation(mContext);
}
} else {//没有extra参数时则继续执行,不做拦截
callback.onContinue(postcard);
}
}
@Override
public void init(Context context) {
mContext = context;
Log.i(TAG, "LoginInterceptor 初始化");
}
}
使用ARouter实现拦截登录功能
最新推荐文章于 2024-06-23 13:12:36 发布