From be9bea2335d4e4617844a1603aa624098c84b2a2 Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期二, 15 十月 2024 13:55:00 +0800 Subject: [PATCH] 1、退出登录 2.显示当前版本号 3.删除缓存 4.地图相关 --- app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java | 328 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 319 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java b/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java index 5c0270b..eea278f 100644 --- a/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java +++ b/app/src/main/java/com/dayu/pipirrapp/activity/LoginActivity.java @@ -1,51 +1,361 @@ package com.dayu.pipirrapp.activity; +import static com.dayu.pipirrapp.net.Constants.BASE_URL; + import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.os.Bundle; +import android.os.PersistableBundle; import android.text.InputType; +import android.util.Base64; +import android.util.Log; import android.view.LayoutInflater; +import android.view.View; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; +import com.dayu.pipirrapp.MyApplication; import com.dayu.pipirrapp.R; +import com.dayu.pipirrapp.bean.db.LoginBean; +import com.dayu.pipirrapp.bean.net.CodeResult; +import com.dayu.pipirrapp.bean.net.LoginResult; +import com.dayu.pipirrapp.dao.DaoSingleton; import com.dayu.pipirrapp.databinding.ActivityLoginBinding; +import com.dayu.pipirrapp.net.ApiManager; +import com.dayu.pipirrapp.net.BaseResponse; +import com.dayu.pipirrapp.net.subscribers.SubscriberListener; +import com.dayu.pipirrapp.observer.LoginObserver; +import com.dayu.pipirrapp.utils.CommonData; +import com.dayu.pipirrapp.utils.SharedPreferencesHelper; +import com.dayu.pipirrapp.utils.ToastUtil; +import com.tencent.bugly.crashreport.CrashReport; + +import java.util.HashMap; +import java.util.Map; -public class LoginActivity extends AppCompatActivity { - private boolean isPasswordVisible = false; +public class LoginActivity extends BaseActivity { + private final String TAG = "LoginActivity"; + ActivityLoginBinding binding; + LoginObserver loginObserver; + //瀵嗙爜鏄惁鍙 + private boolean isPasswordVisible = false; + //鏄惁鏄剧ず楠岃瘉鐮� + private boolean isShowCode; + + private int loginError = 0; + private String codeToken; + //鐐瑰嚮娆℃暟鍒�10娆″悗鍙互閲嶆柊閫夋嫨tag + int clickNumber; + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { + Log.i(TAG, "onCreate"); super.onCreate(savedInstanceState); binding = ActivityLoginBinding.inflate(LayoutInflater.from(this)); setContentView(binding.getRoot()); + initView(); + initData(); + } + + + private void initData() { + + } + + + private void initView() { + loginObserver = new LoginObserver(this); + getLifecycle().addObserver(loginObserver); binding.passwordBtn.setOnClickListener((view) -> { togglePasswordVisibility(); }); binding.loginBtn.setOnClickListener(v -> { - Intent intent = new Intent(LoginActivity.this, MainActivity.class); - startActivity(intent); + String phone = binding.name.getText().toString().trim(); + String pw = binding.password.getText().toString().trim(); + String code = binding.code.getText().toString().trim(); + if (validatePhone(phone) && validatePassword(pw)) { + if (isShowCode) { + if (!validateCode(code)) { + return; + } + } + login(phone, pw, codeToken, code); + } else { + ToastUtil.showToast(LoginActivity.this, "璇疯緭鍏ユ纭俊鎭�"); + } + }); + binding.codeImg.setOnClickListener(v -> { + getCode(); + }); + binding.codeError.setOnClickListener(v -> { + getCode(); + }); + binding.version.setOnClickListener(v -> { + clickNumber++; + if (clickNumber == 10) { + //鐐瑰嚮娆℃暟鍒�10娆″悗鍙互閲嶆柊閫夋嫨tag + loginObserver.choesLibrary(); + clickNumber = 0; + } + }); + if (SharedPreferencesHelper.getInstance(LoginActivity.this).get(CommonData.isShowCode, false)) { + isShowCode = true; + binding.codeLL.setVisibility(View.VISIBLE); + getCode(); + } + } + private void togglePasswordVisibility() { if (isPasswordVisible) { // 濡傛灉瀵嗙爜鍙锛岄殣钘忓瘑鐮� binding.password.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); - binding.passwordBtn.setImageResource(R.drawable.ic_visibility_off); + binding.passwordBtn.setImageResource(R.drawable.vt_ps_close); } else { // 濡傛灉瀵嗙爜闅愯棌锛屾樉绀哄瘑鐮� binding.password.setInputType(InputType.TYPE_CLASS_TEXT); - binding.passwordBtn.setImageResource(R.drawable.ic_visibility); + binding.passwordBtn.setImageResource(R.drawable.vt_ps_open); } - // 绉诲姩鍏夋爣鍒版湯灏� binding.password.setSelection(binding.password.getText().length()); - // 鍒囨崲鏍囧織 isPasswordVisible = !isPasswordVisible; } + + /** + * 鑾峰彇楠岃瘉鐮� + */ + private void getCode() { + Map<String, Object> data = new HashMap<>(); + data.put("type", "math");//鍥剧墖绫诲瀷锛歝har-鏂囨湰锛宮ath-涓�浣嶆暟绠楀紡锛宮ath2-涓や綅鏁扮畻寮� + + + ApiManager.getInstance().requestGetHideLoading(LoginActivity.this, BASE_URL + ":8088/app/captcha/get", CodeResult.class, data, new SubscriberListener<BaseResponse<CodeResult>>() { + @Override + public void onNext(BaseResponse<CodeResult> t) { + try { + if (t.isSuccess()) { + String encodedString = t.getContent().getBase64(); + codeToken = t.getContent().getToken(); + // 绉婚櫎Base64瀛楃涓茬殑澶撮儴淇℃伅 + encodedString = encodedString.substring("data:image/png;base64,".length()); + // 瀵笲ase64瀛楃涓茶繘琛岃В鐮� + byte[] imageAsBytes = Base64.decode(encodedString, Base64.DEFAULT); + // 浣跨敤BitmapFactory灏嗗瓧鑺傛暟缁勮В鐮佹垚Bitmap瀵硅薄 + Bitmap image = BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length); + binding.codeImg.setImageBitmap(image); + binding.codeImg.setVisibility(View.VISIBLE); + binding.codeError.setVisibility(View.GONE); + } else { + binding.codeImg.setVisibility(View.INVISIBLE); + binding.codeError.setVisibility(View.VISIBLE); + ToastUtil.showToast(LoginActivity.this, "楠岃瘉鐮佽幏鍙栧け璐�"); + } + + } catch (Exception e) { + e.printStackTrace(); + CrashReport.postCatchedException(e); + } + + } + }); + + +// ApiManager.getInstance().getCode(data, new CodeListener() { +// @Override +// public void onNext(CodeResult body) { +// try { +// if (body != null && !TextUtils.isEmpty(body.getBase64())) { +// String encodedString = body.getBase64(); +// codeToken = body.getToken(); +// // 绉婚櫎Base64瀛楃涓茬殑澶撮儴淇℃伅 +// encodedString = encodedString.substring("data:image/png;base64,".length()); +// // 瀵笲ase64瀛楃涓茶繘琛岃В鐮� +// byte[] imageAsBytes = Base64.decode(encodedString, Base64.DEFAULT); +// // 浣跨敤BitmapFactory灏嗗瓧鑺傛暟缁勮В鐮佹垚Bitmap瀵硅薄 +// Bitmap image = BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length); +// binding.codeImg.setImageBitmap(image); +// binding.codeImg.setVisibility(View.VISIBLE); +// binding.codeError.setVisibility(View.GONE); +// } else { +// binding.codeImg.setVisibility(View.INVISIBLE); +// binding.codeError.setVisibility(View.VISIBLE); +// ToastUtil.showToast(LoginActivity.this, "楠岃瘉鐮佽幏鍙栧け璐�"); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// CrashReport.postCatchedException(e); +// } +// } +// +// @Override +// public void error(Throwable throwable) { +// +// } +// }); + } + + private void login(String phone, String pw, String token, String code) { + + Map<String, Object> data = new HashMap<>(); + data.put("phone", phone); + data.put("password", pw); + data.put("orgTag", MyApplication.myApplication.myTag); + if (isShowCode) { + data.put("token", token); + data.put("code", code); + } + ApiManager.getInstance().requestPostLoading(LoginActivity.this, BASE_URL + ":8079/sso/sso/loginJson", LoginResult.class, data, new SubscriberListener<BaseResponse<LoginResult>>() { + @Override + public void onNext(BaseResponse<LoginResult> t) { + try { + if (t.isSuccess()) { + SharedPreferencesHelper.getInstance(LoginActivity.this).put(CommonData.Token, t.getContent().getToken()); + MyApplication.myApplication.token = t.getContent().getToken(); + LoginBean loginBean = DaoSingleton.getInstance(LoginActivity.this).loginDao().findFirst(); + if (loginBean == null) { + loginBean = new LoginBean(); + } + loginBean.setName(t.getContent().getName()); + loginBean.setPhone(t.getContent().getPhone()); + DaoSingleton.getInstance(LoginActivity.this).loginDao().insert(loginBean); + SharedPreferencesHelper.getInstance(LoginActivity.this).put(CommonData.isShowCode, false); + startMainActivity(); + } else { + ToastUtil.showToast(LoginActivity.this, t.getMsg()); + loginError++; + if (loginError >= 3) { + isShowCode = true; + SharedPreferencesHelper.getInstance(LoginActivity.this).put(CommonData.isShowCode, true); + binding.codeLL.setVisibility(View.VISIBLE); + } + } + + } catch (Exception e) { + e.printStackTrace(); + CrashReport.postCatchedException(e); + } + + } + }); + } + + /** + * 鍚姩MainActivity + */ + private void startMainActivity() { + Intent intent = new Intent(LoginActivity.this, MainActivity.class); + startActivity(intent); + LoginActivity.this.finish(); + } + + @Override + protected void onStart() { + super.onStart(); + Log.i(TAG, "onStart"); + } + + + @Override + protected void onResume() { + super.onResume(); + Log.i(TAG, "onResume"); + } + + @Override + protected void onRestart() { + super.onRestart(); + Log.i(TAG, "onRestart"); + } + + + @Override + protected void onPause() { + super.onPause(); + Log.i(TAG, "onPause"); + } + + + @Override + protected void onStop() { + super.onStop(); + Log.i(TAG, "onStop"); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + getLifecycle().removeObserver(loginObserver); + Log.i(TAG, "onDestroy"); + } + + + @Override + protected void onSaveInstanceState(@NonNull Bundle outState) { + super.onSaveInstanceState(outState); + Log.i(TAG, "onSaveInstanceState"); + } + + @Override + public void onSaveInstanceState(@NonNull Bundle outState, @NonNull PersistableBundle outPersistentState) { + super.onSaveInstanceState(outState, outPersistentState); + Log.i(TAG, "onSaveInstanceState---outPersistentState"); + } + + @Override + protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) { + super.onRestoreInstanceState(savedInstanceState); + } + + // 鎵嬫満鍙锋牎楠岋細纭繚鏄竴涓湁鏁堢殑鎵嬫満鍙� + private boolean validatePhone(String phone) { + // 浣跨敤姝e垯琛ㄨ揪寮忓垽鏂槸鍚︿负鏈夋晥鐨勬墜鏈哄彿鐮侊紙涓浗澶ч檰锛� + String phonePattern = "^1[3-9]\\d{9}$"; // 绠�鍗曠殑鎵嬫満鍙风爜姝e垯 + if (phone.isEmpty()) { + ToastUtil.showToast(LoginActivity.this, "鎵嬫満鍙蜂笉鑳戒负绌猴紒"); + return false; + } +// else if (!phone.matches(phonePattern)) { +// ToastUtil.showToast(LoginActivity.this, "璇疯緭鍏ユ纭墜鏈哄彿锛�"); +// return false; +// } + else { + return true; + } + } + + // 瀵嗙爜鏍¢獙锛氱‘淇濆瘑鐮侀暱搴︾鍚堣姹� + private boolean validatePassword(String password) { + if (password.isEmpty()) { + ToastUtil.showToast(LoginActivity.this, "瀵嗙爜涓嶈兘涓虹┖锛�"); + return false; + } +// else if (password.length() < 6) { +// ToastUtil.showToast(LoginActivity.this, "瀵嗙爜涓嶈兘灏戜簬6浣嶏紒"); +// return false; +// } + else { + return true; + } + } + + // 楠岃瘉鐮佹牎楠岋細纭繚楠岃瘉鐮佺鍚堥暱搴﹁姹� + private boolean validateCode(String code) { + if (code.isEmpty()) { + ToastUtil.showToast(LoginActivity.this, "楠岃瘉鐮佷笉鑳戒负绌�"); + return false; + } else { + return true; + } + } + + } -- Gitblit v1.8.0