「Update」

1、增加皮肤包校验后删除其它皮肤包的操作
This commit is contained in:
donghongyu
2024-10-15 19:29:57 +08:00
parent 54bd1227be
commit fcd4b3b6a9
5 changed files with 51 additions and 7 deletions

View File

@@ -120,7 +120,9 @@ public class SkinManager extends Observable {
theme.delete();
}
theme.mkdirs();
// 获取皮肤插件文件对象
File skinFile = skin.getSkinFile(theme);
// 判断是否存在
if (skinFile.exists()) {
Log.e("SkinActivity", "皮肤已存在,开始换肤……");
SkinManager.getInstance().loadSkin(skin.path);
@@ -152,7 +154,8 @@ public class SkinManager extends Observable {
//皮肤包的md5校验 防止下载文件损坏(但是会减慢速度。从数据库查询已下载皮肤表数据库中保留md5字段)
if (TextUtils.equals(SkinUtils.getSkinMD5(skinFile), skin.md5)) {
Log.d("SkinActivity", "校验成功,修改文件名。");
// 校验文件签名没问题后删除其他主题
deleteFilesExcept(theme,skin.file.getName());
} else {
Log.e("SkinActivity", "皮肤文件校验出错,本地文件MD5 与云端文件MD5 不一致。");
Toast.makeText(mApplication, "皮肤文件校验出错,本地文件MD5 与云端文件MD5 不一致。", Toast.LENGTH_SHORT).show();
@@ -182,4 +185,25 @@ public class SkinManager extends Observable {
return new DownloadManager(skin.url, theme, downloadListener);
}
public static void deleteFilesExcept(File directory, String fileNameToKeep) {
if (directory == null || !directory.exists() || !directory.isDirectory()) {
throw new IllegalArgumentException("Provided path is not a valid directory: " + directory);
}
// 获取目录下的所有文件和子目录
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
// 如果文件名不等于要保留的文件名,并且不是目录,则删除
if (!file.getName().equals(fileNameToKeep) && !file.isDirectory()) {
if (file.delete()) {
System.out.println("Deleted: " + file.getAbsolutePath());
} else {
System.err.println("Failed to delete: " + file.getAbsolutePath());
}
}
}
}
}
}