项目里面的类,统一访问一个SharedPreferences里面的用户ID,用来只作userId的访问,在里面,如果userId为空的话,就截断,不让其访问服务器,但是,这个方法,写的是必须返回一个String,所以,再怎么,也才会返回一个数据,那么,那边拿到数据就会去访问服务端。所以,我想在这个SharedPr类中,就截断了去访问的动作,如果有userId,那么就返回。否则,就去登录页面。不知道怎么做呀。。
下面是SharedPrConst 类 做userId查询
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.blankj.utilcode.util.ActivityUtils;
import com.hnsaturn.tuxing003.ui.universal.LoginAc;
public class SharedPrConst extends AppCompatActivity {
private static SharedPrConst mInstance = null;
private String userSharedPr = SharedPrDateName.userSharedPr;
public static SharedPrConst getInstant() {
if (mInstance == null) {
//加线程通路锁
synchronized (SharedPrConst.class) {
if (mInstance == null) {
mInstance = new SharedPrConst();
}
}
}
//返回唯一对象
return mInstance;
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
// private SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(userSharedPr, Context.MODE_PRIVATE);
// public String userId = sharedPreferences.getString("userId", "");
private SharedPreferences sp = ActivityUtils.getTopActivity().getSharedPreferences(userSharedPr, Context.MODE_PRIVATE);
public String userId = sp.getString("userId", "");
// 判断得到值为null则为没有登录
public String getUserIdHaveInterceptor(Context context) {
if (TextUtils.isEmpty(userId)) {
Toast.makeText(context, "请登录", Toast.LENGTH_SHORT).show();
// 跳转登录界面
Intent intent = new Intent(SharedPrConst.this, LoginAc.class);
context.startActivity(intent);
return null;
} else {
return userId;
}
}
public String getUserId() {
if (userId!=null || !"".equals(userId)){
return userId;
}else
return "请登录";
}
}
下面是调用的类哈
将SharedPr里面的跳转context改为为 接收的context 也不行