341 lines
11 KiB
Java
341 lines
11 KiB
Java
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();
|
||
}
|
||
}
|
||
}
|
||
}
|