思路:
1.第一次登录的时候在login接口里获取一个token,如果token过期则重新登录
2.通过SharedPreferences 存储token
代码实现:
1.App
2.WelcomeActivity
3.LoginActivity
4.MainActivity
public class SpEdit {
private SharedPreferences sp;// 用于保存应用内部数据
private SharedPreferences.Editor spe; // 编辑appShared中的数据
public SpEdit(Context context, String name) {
sp = context.getSharedPreferences(name, MODE_PRIVATE);
spe = sp.edit();
}
public String load(String key) {
return sp.getString(key, "");
}
public void save(String key, String value) {
spe.putString(key, value);
}
public void remove(String key) {
spe.remove(key);
}
public void commit() {
spe.commit();
}
public void clear() {
spe.clear();
spe.commit();
}
}
public class SpUtils {
private static SpEdit spEdit = null;
public static void init(Context context, String name) {
spEdit = new SpEdit(context, name);
}
public static String loadValue(String key) {
return spEdit.load(key);
}
public static void removeValue(String key) {
spEdit.remove(key);
spEdit.commit();
}
public static void saveValue(String key, String value) {
spEdit.save(key, value);
spEdit.commit();
}
public static void saveJson(String key, String json) {
spEdit.save(key, json);
spEdit.commit();
}
public static <T> T loadJson(String key, Class<T> cls) throws JsonIOException, JsonSyntaxException {
String json = loadValue(key);
if (json.length() > 0) {
return JsonUtils.fromJson(json, cls);
}
return null;
}
}
public class WelcomeActivity extends BaseActivity{
@Override
public int getContentViewId() {
return R.layout.layout;
}
@Override
public void initView(View view) {
ButterKnife.bind(this);
//是否有accessToken
String accessToken = SpUtils.loadValue("accessToken");
if (accessToken != null && accessToken.length() > 0) {
String UserStr = SpUtils.loadValue("user");//user信息
if (UserStr != null) {
try {
// userBean = JsonUtils.fromJson(UserStr, UserBean.class);
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
} catch (Exception ex) {
ActivityManager.startActivityAndFinish(this, LoginActivity.class);
}
}
} else {
ActivityManager.startActivityAndFinish(this, LoginActivity.class);
}
}
}
public class LoginActivity extends BaseActivity implements View.OnClickListener {
@BindView(R.id.et_phone)
EditText etPhone;
@BindView(R.id.et_psw)
EditText etPsw;
@BindView(R.id.bt_login)
Button btLogin;
@Override
public int getContentViewId() {
return R.layout.activity_login;
}
@Override
public void initView(View view) {
btLogin.setOnClickListener(this);
boolean input = getIntent().getBooleanExtra("input", true);
if (!input) {
etPhone.setText("");
etPsw.setText("");
} else {
String n = SpUtils.loadValue("phoneNumber");
if (!StringUtils.isEmpty(n)) {
etPhone.setText(n);
etPhone.setSelection(n.length());
}
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_login:
login();
break;
}
}
private void login() {
final String phoneNumber = etPhone.getText().toString().trim();
final String pws = etPsw.getText().toString().trim();
Http.post(this, map, url, new HttpCallback<UserBean>() {
@Override
public void onSuccess(UserBean data) {
// Cache.userBean= userBean;//装返回的参数
SpUtils.saveValue("phoneNumber", phoneNumber);
//无接口可以自己写死看效果
SpUtils.saveValue("accessToken", "6762d86d098903efdbf855f82f72b7bb");
ActivityManager.startActivityAndFinish(this, MainActivity.class);
}
});
}
}
public class MainActivity extends BaseActivity {
@Override
public int getContentViewId() {
return R.layout.activity_main;
}
@Override
public void initView(View view) {
}
}