From a1bf49ba9ec31fc478c435e8a3e15f17ddd7c530 Mon Sep 17 00:00:00 2001 From: An Bui <91354810+AnBui2004@users.noreply.github.com> Date: Wed, 8 Apr 2026 20:31:41 +0700 Subject: [PATCH] 3.9.3 Bugs fixed. --- app/build.gradle | 6 +-- .../elephant/interaction/Interaction.java | 4 +- .../java/com/vectras/qemu/utils/RamInfo.java | 8 +-- app/src/main/java/com/vectras/vm/RomInfo.java | 6 +-- .../java/com/vectras/vm/utils/FileUtils.java | 17 +++--- .../com/vectras/vm/x11/LoriePreferences.java | 2 +- .../layout/activity_external_vnc_settings.xml | 1 + web/data/UpdateConfig.json | 8 +-- web/data/vroms-store.json | 54 +++++++++++++++++++ 9 files changed, 83 insertions(+), 23 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index a75dc13..ff6b750 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -6,14 +6,14 @@ plugins { android { namespace 'com.vectras.vm' - compileSdk = 36 + compileSdk = 37 defaultConfig { applicationId "com.vectras.vm" minSdk minApi targetSdk targetApi - versionCode 96 - versionName "3.9.2" + versionCode 97 + versionName "3.9.3" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true diff --git a/app/src/main/java/com/anbui/elephant/interaction/Interaction.java b/app/src/main/java/com/anbui/elephant/interaction/Interaction.java index 8fc1607..a89a137 100644 --- a/app/src/main/java/com/anbui/elephant/interaction/Interaction.java +++ b/app/src/main/java/com/anbui/elephant/interaction/Interaction.java @@ -136,9 +136,9 @@ public class Interaction { if (isSuccess && JSONUtils.isValidFromString(body)) { DataInteraction data = new Gson().fromJson(body, DataInteraction.class); dataInteraction.views = data.count; + setViews(); callback.onResult(true, data.count, getLikeCount()); LogPrinter.print(TAG, "View succeed."); - setViews(); } else { callback.onResult(false, 1, 0); LogPrinter.print(TAG, "View unsucceed."); @@ -199,8 +199,8 @@ public class Interaction { if (isSuccess && JSONUtils.isValidFromString(body)) { DataInteraction data = new Gson().fromJson(body, DataInteraction.class); dataInteraction.likes = data.count; - callback.onResult(true, getViewCount(), data.count); setLikes(); + callback.onResult(true, getViewCount(), data.count); LogPrinter.print(TAG, "Like succeed."); } else { callback.onResult(false, 1, 0); diff --git a/app/src/main/java/com/vectras/qemu/utils/RamInfo.java b/app/src/main/java/com/vectras/qemu/utils/RamInfo.java index 53d76b2..c8857b2 100644 --- a/app/src/main/java/com/vectras/qemu/utils/RamInfo.java +++ b/app/src/main/java/com/vectras/qemu/utils/RamInfo.java @@ -28,13 +28,13 @@ public class RamInfo { int freeRamInt = safeLongToInt(freeMem); int totalRamInt = safeLongToInt(totalMem); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity); - if (prefs.getBoolean("customMemory", false) && TextUtils.isNumberOnly(prefs.getString("memory", String.valueOf(256)))) { - if (Long.parseLong(prefs.getString("memory", String.valueOf(256))) > totalMem) { - prefs.edit().putInt("memory", totalRamInt / 2).apply(); + if (prefs.getBoolean("customMemory", false) && TextUtils.isNumberOnly(prefs.getString("memory", "256"))) { + if (Long.parseLong(prefs.getString("memory", "256")) > totalMem) { + prefs.edit().putString("memory", String.valueOf(totalRamInt / 2)).apply(); return totalRamInt / 2; } - return Integer.parseInt(prefs.getString("memory", String.valueOf(256))); + return Integer.parseInt(prefs.getString("memory", "256")); } else { return freeRamInt - 100; } diff --git a/app/src/main/java/com/vectras/vm/RomInfo.java b/app/src/main/java/com/vectras/vm/RomInfo.java index 7f4e0ad..f4be11c 100644 --- a/app/src/main/java/com/vectras/vm/RomInfo.java +++ b/app/src/main/java/com/vectras/vm/RomInfo.java @@ -321,10 +321,10 @@ public class RomInfo extends AppCompatActivity { Intent intent; try { intent = Intent.parseUri("intent://content/" + contentID + "#Intent;scheme=anbui;package=com.anbui.app;S.browser_fallback_url=https%3A%2F%2Fanbui.ovh%2Fapps%2Fgetanbuiapp.html;end", Intent.URI_INTENT_SCHEME); - } catch (URISyntaxException e) { - return; + startActivity(intent); + } catch (Exception ignored) { + binding.viewinanbuiapp.setVisibility(View.GONE); } - startActivity(intent); }); } diff --git a/app/src/main/java/com/vectras/vm/utils/FileUtils.java b/app/src/main/java/com/vectras/vm/utils/FileUtils.java index 81000e2..8876a54 100644 --- a/app/src/main/java/com/vectras/vm/utils/FileUtils.java +++ b/app/src/main/java/com/vectras/vm/utils/FileUtils.java @@ -71,7 +71,7 @@ public class FileUtils { @SuppressLint("NewApi") public static String getPath(Context context, final Uri uri) { - if (uri.toString().startsWith("content://ru.zdevs.zarchiver") && uri.getPath() != null && isFileExists(uri.getPath())) + if ((uri.toString().startsWith("content://ru.zdevs.zarchiver") || uri.toString().startsWith("content://bin.mt.plus")) && uri.getPath() != null && isFileExists(uri.getPath())) return uri.getPath(); // check here to KITKAT or new version @@ -356,11 +356,16 @@ public class FileUtils { try { InputStream inputStream = context.getContentResolver().openInputStream(uri); FileOutputStream outputStream = new FileOutputStream(output); - int read = 0; - int bufferSize = 1024; - final byte[] buffers = new byte[bufferSize]; - while ((read = inputStream.read(buffers)) != -1) { - outputStream.write(buffers, 0, read); + int read; + + byte[] buffer; + if (DeviceUtils.totalMemoryCapacity(context) < 4L * 1024 * 1024 * 1024) + buffer = new byte[64 * 1024]; + else + buffer = new byte[128 * 1024]; + + while ((read = inputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, read); } inputStream.close(); diff --git a/app/src/main/java/com/vectras/vm/x11/LoriePreferences.java b/app/src/main/java/com/vectras/vm/x11/LoriePreferences.java index 476ac25..5108f04 100644 --- a/app/src/main/java/com/vectras/vm/x11/LoriePreferences.java +++ b/app/src/main/java/com/vectras/vm/x11/LoriePreferences.java @@ -351,7 +351,7 @@ public class LoriePreferences extends AppCompatActivity { Intent intent = new Intent(ACTION_PREFERENCES_CHANGED); intent.putExtra("key", key); intent.setPackage("com.vectras.vm"); - requireContext().sendBroadcast(intent); + if (isAdded()) requireContext().sendBroadcast(intent); handler.postAtTime(this::updatePreferencesLayout, 100); return true; diff --git a/app/src/main/res/layout/activity_external_vnc_settings.xml b/app/src/main/res/layout/activity_external_vnc_settings.xml index 8c1e1ca..1acf76e 100644 --- a/app/src/main/res/layout/activity_external_vnc_settings.xml +++ b/app/src/main/res/layout/activity_external_vnc_settings.xml @@ -52,6 +52,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="numberSigned" + android:maxLength="5" android:digits="0123456789"/> diff --git a/web/data/UpdateConfig.json b/web/data/UpdateConfig.json index 209662e..9f65553 100644 --- a/web/data/UpdateConfig.json +++ b/web/data/UpdateConfig.json @@ -5,11 +5,11 @@ "url": "https://github.com/xoureldeen/Vectras-VM-Android/releases", "Message": "