Files
Android-WaterProject/app/src/main/java/com/ckkj/water/mine/SettingsActivity.java
fengjignqi 3f0260a37a 优化
2026-07-10 15:22:01 +08:00

341 lines
11 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.ckkj.water.mine;
import static com.ckkj.water.ConstantUtil.POST_NOTIFICATIONS_PERMISSION_CODE;
import static com.ckkj.water.ConstantUtil.WRITE_FILE_PERMISSON_CPDE;
import android.Manifest;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import androidx.annotation.NonNull;
import com.ckkj.water.main.MainContract;
import com.ckkj.water.main.entity.CheckVersionEntity;
import com.ckkj.water.mine.entity.MineUserInfoBean;
import com.ckkj.water.utils.AppInfoUtil;
import com.ckkj.water.utils.manager.ThemeManager;
import com.gyf.immersionbar.ImmersionBar;
import com.ckkj.water.AppConfig;
import com.ckkj.water.EventMessage;
import com.ckkj.water.R;
import com.ckkj.water.base.BaseActivity;
import com.ckkj.water.base.BaseFragment;
import com.ckkj.water.databinding.ActivitySettingsLayoutBinding;
import com.ckkj.water.dialog.DialogAppUpdate;
import com.ckkj.water.login.LoginActivity;
import com.ckkj.water.mine.mvp.MineContract;
import com.ckkj.water.mine.mvp.MineImpl;
import com.ckkj.water.mine.mvp.MinePresenter;
import com.ckkj.water.network.BaseBean;
import com.ckkj.water.utils.manager.ActivityManager;
import com.ckkj.water.utils.manager.WaterUserInfoManager;
import com.ckkj.water.utils.show.ToastUtil;
import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.util.List;
import de.greenrobot.event.EventBus;
import pub.devrel.easypermissions.EasyPermissions;
/**
* @author fengxiaoyang
* @date 2025/8/18
* @description TODO: 设置页面
*/
public class SettingsActivity extends BaseActivity<ActivitySettingsLayoutBinding, MinePresenter>
implements MineContract.MineView, MainContract.MainView, EasyPermissions.PermissionCallbacks{
@Override
public void initData(Bundle savedInstanceState) {
super.initData(savedInstanceState);
ImmersionBar.with(this)
.statusBarDarkFont(ThemeManager.isAppThemeLight(mContext)) // 白色状态栏图标
.navigationBarColor(R.color.color_gray_theme)
.titleBar(viewBinding.rlTitle)
.init();
viewBinding.includeTitle.tvTitle.setText(R.string.settings_title);
viewBinding.includeTitle.imgBack.setOnClickListener(c -> finish());
if(AppConfig.USER_LOGIN){
// viewBinding.tvUserPhone.setText(WaterUserInfoManager.getInstance().getUserInfo().getMobile());
// viewBinding.tvLogOut.setVisibility(View.VISIBLE);
}
//获取本应用所占用的缓存
displayCacheSize();
try {
// 获取 PackageManager 实例
PackageManager packageManager = mContext.getPackageManager();
// 获取应用信息
PackageInfo packageInfo = packageManager.getPackageInfo(mContext.getPackageName(), 0);
// 获取版本名称
String versionName = packageInfo.versionName;
viewBinding.tvVersionName.setText(versionName);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
initListener();
}
private void initListener() {
setClick(viewBinding.rlCheckVersion);
setClick(viewBinding.rlSetCache);
setClick(viewBinding.rlUserAgreement);
setClick(viewBinding.rlUserPrivacy);
setClick(viewBinding.rlLogOff);
}
private void setClick(View view) {
view.setOnClickListener(this::onClick);
}
@Override
public MinePresenter createPresenter() {
return new MinePresenter(new MineImpl());
}
@Override
public int getLayoutResId(Bundle savedInstanceState) {
return 0;
}
public void onClick(View v) {
switch (v.getId()){
case R.id.rl_check_version://版本检测
//版本检测更新
mPresenter.checkNewVersion();
break;
case R.id.rl_set_cache:
showLoadingDialog();
clearCache();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
hideDialogLoading();
ToastUtil.showShort(mContext,getString(R.string.cache_cleared_success));
displayCacheSize();
}
},800);
break;
case R.id.rl_user_agreement://用户协议
Bundle bundle = new Bundle();
bundle.putInt("from_requse_code",WebviewUserAgreement.AGREEMENT_CODE);
goToWihoutNoPresent(mContext, WebviewUserAgreement.class,bundle);
break;
case R.id.rl_user_privacy://隐私政策
Bundle bundleYS = new Bundle();
bundleYS.putInt("from_requse_code",WebviewUserAgreement.PRIVACY_CODE);
goToWihoutNoPresent(mContext, WebviewUserAgreement.class,bundleYS);
break;
case R.id.rl_log_off://注销账号
goTo(mContext, UserLogOffAccountActivity.class,null);
break;
}
}
private boolean isForceUpdate;
private DialogAppUpdate mUpdateDialog;
@Override
public void showError(String message) {
}
@Override
public void logOut(BaseBean bean) {
}
private void displayCacheSize() {
long cacheSize = getCacheSize();
String sizeString;
if (cacheSize >= 1024 * 1024) {
sizeString = String.format("%.2f MB", cacheSize / (1024.0 * 1024.0));
} else {
sizeString = String.format("%d KB", cacheSize / 1024);
}
viewBinding.tvCacheSize.setText(sizeString);
}
private long getCacheSize() {
File cacheDir = mContext.getCacheDir();
return getFolderSize(cacheDir);
}
private long getFolderSize(File dir) {
long size = 0;
if (dir != null && dir.isDirectory()) {
for (File file : dir.listFiles()) {
if (file.isFile()) {
size += file.length();
} else {
size += getFolderSize(file);
}
}
}
return size;
}
private void clearCache() {
File cacheDir = getCacheDir();
deleteDir(cacheDir);
}
private boolean deleteDir(File dir) {
if (dir != null && dir.isDirectory()) {
String[] children = dir.list();
if (children != null) {
for (String child : children) {
deleteDir(new File(dir, child));
}
}
}
return dir.delete();
}
@Override
public void getUserInfoSuccess(MineUserInfoBean bean) {
}
@Override
public void updateUserInfoSuccess(BaseBean bean) {
}
@Override
public void updateUserPasswordSuccess(BaseBean bean) {
}
@Override
public void logOutSuccess(BaseBean bean) {
}
@Override
public void uploadImageSuccess(MineUserInfoBean bean) {
}
@Override
public void getAppVersionSuccess(CheckVersionEntity bean) {
int versionCode = (int) AppInfoUtil.getAppVersionCode(mContext);
if(bean == null){
return;
}
if(!bean.isForceUpdate()){//不强制
isForceUpdate = false;
}else{
isForceUpdate = true;
}
//前期强制更新
// isForceUpdate = true;
if(bean.getVersionCode() > versionCode){
//App更新dialog
mUpdateDialog = new DialogAppUpdate(mContext,R.layout.dialog_app_update_water,isForceUpdate,bean);
mUpdateDialog.show();
mUpdateDialog.setOnDialogListener(new DialogAppUpdate.DialogListener() {
@Override
public void callBackGetPermisson(String permission) {
if (!hasRecordPermission(permission)) {
if (Manifest.permission.POST_NOTIFICATIONS.equals(permission)) {
getPermissionRequst(permission,
getString(R.string.notification_permission_request),
getString(R.string.notification_permission_desc),
POST_NOTIFICATIONS_PERMISSION_CODE);
return;
}
// 没有权限只在ACTION_DOWN时去申请
getPermissionRequst(permission,
getString(R.string.storage_permission_request),
getString(R.string.storage_permission_desc),
WRITE_FILE_PERMISSON_CPDE);
}else{
}
}
@Override
public void downLoadFinish() {
runOnUiThread(new Runnable() {
@Override
public void run() {
ToastUtil.showShort(mContext,getString(R.string.download_complete_installing));
}
});
}
});
}else{
ToastUtil.showShort(mContext,"当前已是最新版本");
}
}
@Override
public void getAccountLogoffCodeSuccess(BaseBean bean) {
}
@Override
public void confirmAccountLogoffCodeSuccess(BaseBean bean) {
}
@Override
public void activationVipSuccess(BaseBean bean) {
}
@Override
public void getVersionCheck(CheckVersionEntity bean) {
}
@Override
public void getYunshiDataSuccess(BaseBean bean) {
}
@Override
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
}
@Override
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull @NotNull String[] permissions, @NonNull @NotNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
hidePermissionDialog();
if(requestCode == WRITE_FILE_PERMISSON_CPDE){
if(mUpdateDialog != null && grantResults.length > 0 && grantResults[0] == android.content.pm.PackageManager.PERMISSION_GRANTED){
mUpdateDialog.startUpdateApp();
}
}else if(requestCode == POST_NOTIFICATIONS_PERMISSION_CODE){
if(mUpdateDialog != null && grantResults.length > 0 && grantResults[0] == android.content.pm.PackageManager.PERMISSION_GRANTED){
mUpdateDialog.startUpdateApp();
}
}
}
}