package com.taoke.autopay.android.ui;
|
|
import android.Manifest;
|
import android.content.Intent;
|
import android.os.Bundle;
|
import android.os.Environment;
|
import android.text.method.HideReturnsTransformationMethod;
|
import android.text.method.PasswordTransformationMethod;
|
import android.widget.Toast;
|
|
import androidx.activity.EdgeToEdge;
|
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.core.graphics.Insets;
|
import androidx.core.view.ViewCompat;
|
import androidx.core.view.WindowInsetsCompat;
|
|
import com.apkfuns.log2file.LogFileEngineFactory;
|
import com.apkfuns.logutils.LogUtils;
|
import com.taoke.autopay.android.data.local.LocalStore;
|
import com.taoke.autopay.android.data.local.entity.LoginAccount;
|
import com.taoke.autopay.android.data.network.RestAPI;
|
import com.taoke.autopay.android.databinding.ActivitySingInBinding;
|
import com.taoke.autopay.android.utils.MD5Utils;
|
import com.taoke.autopay.android.utils.PermissionHelper;
|
import com.taoke.autopay.android.utils.PermissionInterface;
|
|
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
|
import io.reactivex.rxjava3.disposables.Disposable;
|
import io.reactivex.rxjava3.schedulers.Schedulers;
|
|
public class SignInActivity extends AppCompatActivity implements PermissionInterface {
|
|
private ActivitySingInBinding mViewBinding;
|
|
private Disposable mDisposable;
|
|
private PermissionHelper mPermissionsChecker;
|
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
EdgeToEdge.enable(this);
|
mViewBinding = ActivitySingInBinding.inflate(getLayoutInflater());
|
setContentView(mViewBinding.getRoot());
|
LoginAccount account = LocalStore.getInstance().getAccount();
|
if (account != null) {
|
mViewBinding.etAccount.setText(account.getAccount());
|
mViewBinding.etPwd.setText(account.getPwd());
|
}
|
|
mPermissionsChecker = new PermissionHelper(this, this);
|
|
|
ViewCompat.setOnApplyWindowInsetsListener(mViewBinding.main, (v, insets) -> {
|
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
|
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
|
return insets;
|
});
|
|
mViewBinding.toggleButton.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
if (isChecked) {
|
mViewBinding.etPwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
|
} else {
|
mViewBinding.etPwd.setTransformationMethod(PasswordTransformationMethod.getInstance());
|
}
|
});
|
mViewBinding.btnSignIn.setOnClickListener(v -> signIn());
|
init();
|
}
|
|
private void init() {
|
if (mPermissionsChecker.lacksPermissions(getPermissions())) { //检测权限
|
mPermissionsChecker.showNormalDialog();
|
} else {
|
LogUtils.getLogConfig()
|
.configAllowLog(true)
|
.configTagPrefix("taoke")
|
.configShowBorders(true)
|
.configFormatTag("%d{HH:mm:ss:SSS} %t %c{-5}");
|
|
LogUtils.getLog2FileConfig().configLog2FileEnable(true)
|
// targetSdkVersion >= 23 需要确保有写sdcard权限
|
.configLog2FilePath(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Download/" + getPackageName() + "/logs")
|
.configLog2FileNameFormat("%d{yyyyMMdd}.txt")
|
.configLogFileEngine(new LogFileEngineFactory(getApplicationContext()));
|
|
LogUtils.i("日志初始化完成");
|
LogUtils.getLog2FileConfig().flushAsync();
|
}
|
|
|
}
|
|
private void signIn() {
|
mDisposable = RestAPI.getInstance().apiService()
|
.signIn(mViewBinding.etAccount.getEditableText().toString(),
|
MD5Utils.getMD532(mViewBinding.etPwd.getEditableText().toString()))
|
.subscribeOn(Schedulers.io())
|
.observeOn(AndroidSchedulers.mainThread())
|
.subscribe(userResponseData -> {
|
if (userResponseData.code == 0) {
|
LocalStore.getInstance().putAccount(new LoginAccount(mViewBinding.etAccount.getEditableText().toString(), mViewBinding.etPwd.getEditableText().toString()));
|
LocalStore.getInstance().putUser(userResponseData.data);
|
startActivity(new Intent(this, MainActivity.class));
|
finish();
|
} else {
|
Toast.makeText(this, userResponseData.message, Toast.LENGTH_SHORT).show();
|
}
|
},
|
throwable -> Toast.makeText(this, throwable.getMessage(), Toast.LENGTH_SHORT).show());
|
}
|
|
@Override
|
protected void onDestroy() {
|
if (mDisposable != null) {
|
mDisposable.dispose();
|
}
|
super.onDestroy();
|
}
|
|
@Override
|
public int getPermissionsRequestCode() {
|
return 101;
|
}
|
|
@Override
|
public String[] getPermissions() {
|
return new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
|
Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
}
|
|
@Override
|
public void requestPermissionsSuccess() {
|
init();
|
}
|
|
@Override
|
public void requestPermissionsFail() {
|
|
}
|
}
|