Compare commits

...

3 Commits

Author SHA1 Message Date
ZhanGSKen
fdddde33b5 <contacts>APK 1.0.7 release Publish. 2025-03-03 20:51:18 +08:00
ZhanGSKen
f263733609 UI界面优化 2025-03-03 20:42:00 +08:00
ZhanGSKen
51a1cf1e26 重构为Java7语法 2025-03-03 20:23:00 +08:00
3 changed files with 25 additions and 16 deletions

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Mon Mar 03 17:39:16 HKT 2025 #Mon Mar 03 20:51:18 HKT 2025
stageCount=7 stageCount=8
libraryProject= libraryProject=
baseVersion=1.0 baseVersion=1.0
publishVersion=1.0.6 publishVersion=1.0.7
buildCount=0 buildCount=0
baseBetaVersion=1.0.7 baseBetaVersion=1.0.8

View File

@@ -48,24 +48,29 @@ public class TomCat {
.url(zipUrl) .url(zipUrl)
.build(); .build();
try (Response response = client.newCall(request).execute()) { try {
Response response = client.newCall(request).execute();
if (!response.isSuccessful()) { if (!response.isSuccessful()) {
throw new IOException("Unexpected code " + response); throw new IOException("Unexpected code " + response);
} }
// 下载 ZIP 文件到临时位置 // 下载 ZIP 文件到临时位置
File tempZipFile = File.createTempFile("temp", ".zip"); File tempZipFile = File.createTempFile("temp", ".zip");
try (InputStream inputStream = response.body().byteStream(); try {
FileOutputStream outputStream = new FileOutputStream(tempZipFile)) { InputStream inputStream = response.body().byteStream();
FileOutputStream outputStream = new FileOutputStream(tempZipFile);
byte[] buffer = new byte[1024]; byte[] buffer = new byte[1024];
int length; int length;
while ((length = inputStream.read(buffer)) > 0) { while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length); outputStream.write(buffer, 0, length);
} }
} catch (Exception e) {
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
} }
// 解压 ZIP 文件到指定文件夹 // 解压 ZIP 文件到指定文件夹
try (ZipInputStream zipInputStream = new ZipInputStream(Files.newInputStream(tempZipFile.toPath()))) { try {
ZipInputStream zipInputStream = new ZipInputStream(Files.newInputStream(tempZipFile.toPath()));
ZipEntry zipEntry; ZipEntry zipEntry;
while ((zipEntry = zipInputStream.getNextEntry()) != null) { while ((zipEntry = zipInputStream.getNextEntry()) != null) {
Path targetFilePath = Paths.get(destinationFolder, zipEntry.getName()); Path targetFilePath = Paths.get(destinationFolder, zipEntry.getName());
@@ -83,11 +88,15 @@ public class TomCat {
} }
zipInputStream.closeEntry(); zipInputStream.closeEntry();
} }
} catch (Exception e) {
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
} }
// 删除临时 ZIP 文件 // 删除临时 ZIP 文件
tempZipFile.delete(); tempZipFile.delete();
LogUtils.d(TAG, "已更新 BoBullToon 数据"); LogUtils.d(TAG, "已更新 BoBullToon 数据");
} catch (Exception e) {
LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
} }
} }
@@ -97,12 +106,12 @@ public class TomCat {
try { try {
// 删除旧文件 // 删除旧文件
File fOldFolder = new File(destinationFolder); File fOldFolder = new File(destinationFolder);
if(fOldFolder.exists()) { if (fOldFolder.exists()) {
deleteFolderRecursive(fOldFolder); deleteFolderRecursive(fOldFolder);
fOldFolder.mkdirs(); fOldFolder.mkdirs();
LogUtils.d(TAG, "已清空 BoBullToon 数据"); LogUtils.d(TAG, "已清空 BoBullToon 数据");
} }
// 更新新文件 // 更新新文件
downloadAndExtractZip(zipUrl, destinationFolder); downloadAndExtractZip(zipUrl, destinationFolder);
LogUtils.d(TAG, "ZIP 文件下载并解压成功。"); LogUtils.d(TAG, "ZIP 文件下载并解压成功。");
@@ -112,14 +121,14 @@ public class TomCat {
} }
return false; return false;
} }
// 递归删除文件夹及其内容的方法 // 递归删除文件夹及其内容的方法
public static void deleteFolderRecursive(File file) { public static void deleteFolderRecursive(File file) {
// 判断是否为文件夹 // 判断是否为文件夹
if (file.isDirectory()) { if (file.isDirectory()) {
// 列出文件夹中的所有文件和子文件夹 // 列出文件夹中的所有文件和子文件夹
File[] files = file.listFiles(); File[] files = file.listFiles();
if (files!= null) { if (files != null) {
// 遍历并递归删除每个文件和子文件夹 // 遍历并递归删除每个文件和子文件夹
for (File f : files) { for (File f : files) {
deleteFolderRecursive(f); deleteFolderRecursive(f);

View File

@@ -62,7 +62,7 @@
<Switch <Switch
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="是否启用云盾" android:text="是否启用云盾防御"
android:layout_margin="5dp" android:layout_margin="5dp"
android:id="@+id/sw_IsEnableDun" android:id="@+id/sw_IsEnableDun"
android:onClick="onSW_IsEnableDun"/> android:onClick="onSW_IsEnableDun"/>
@@ -78,7 +78,7 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="初始防御层数量:"/> android:text="初始防御层的叠加数量:"/>
<EditText <EditText
android:layout_width="0dp" android:layout_width="0dp"
@@ -99,7 +99,7 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="恢复防御时间间隔(秒钟)"/> android:text="防御层每次恢复的时间间隔(秒钟)"/>
<EditText <EditText
android:layout_width="0dp" android:layout_width="0dp"
@@ -120,7 +120,7 @@
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="每小时回复防御数量:"/> android:text="防御层每次恢复的叠加数量:"/>
<EditText <EditText
android:layout_width="0dp" android:layout_width="0dp"