diff --git a/app/build.gradle b/app/build.gradle index 22f991a..41929b9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,8 +12,8 @@ android { applicationId "com.vectras.vm" minSdk minApi targetSdk targetApi - versionCode 77 - versionName "3.7.3" + versionCode 78 + versionName "3.7.4" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true diff --git a/app/src/main/java/com/vectras/vm/creator/VMCreatorActivity.java b/app/src/main/java/com/vectras/vm/creator/VMCreatorActivity.java index fbb7bdf..95dc235 100644 --- a/app/src/main/java/com/vectras/vm/creator/VMCreatorActivity.java +++ b/app/src/main/java/com/vectras/vm/creator/VMCreatorActivity.java @@ -68,7 +68,7 @@ public class VMCreatorActivity extends AppCompatActivity { public boolean addromnowdone = false; private boolean created = false; boolean modify; - private boolean isImportingCVBI = false; + private boolean isProcessingFile = false; public static DataMainRoms current; private String thumbnailPath = ""; private String vmID = VMManager.idGenerator(); @@ -348,7 +348,7 @@ public class VMCreatorActivity extends AppCompatActivity { } private void onBack() { - if (isImportingCVBI) return; + if (isProcessingFile) return; if (!created && !modify) { new Thread(() -> FileUtils.delete(new File (AppConfig.vmFolder + vmID))).start(); @@ -359,7 +359,7 @@ public class VMCreatorActivity extends AppCompatActivity { public void onDestroy() { if (!created && !modify) { - new Thread(() -> FileUtils.deleteDirectory(AppConfig.vmFolder + vmID)).start(); + new Thread(() -> FileUtils.delete(new File(AppConfig.vmFolder + vmID))).start(); } modify = false; super.onDestroy(); @@ -394,6 +394,7 @@ public class VMCreatorActivity extends AppCompatActivity { executor.execute(() -> { try { + isProcessingFile = true; String _filename = FileUtils.getFileNameFromUri(this, uri); if (_filename == null || _filename.isEmpty()) { _filename = String.valueOf(System.currentTimeMillis()); @@ -420,11 +421,8 @@ public class VMCreatorActivity extends AppCompatActivity { null)); Log.e(TAG, "isoPicker: " + e.getMessage()); } finally { - runOnUiThread(() -> { - if (!isFinishing() && !isDestroyed()) { - progressDialog.dismiss(); - } - }); + isProcessingFile = false; + runOnUiThread(() -> DialogUtils.safeDismiss(this, progressDialog)); } }); } else { @@ -492,6 +490,7 @@ public class VMCreatorActivity extends AppCompatActivity { executor.execute(() -> { try { + isProcessingFile = true; String _filename = FileUtils.getFileNameFromUri(this, uri); if (_filename == null || _filename.isEmpty()) { _filename = String.valueOf(System.currentTimeMillis()); @@ -524,11 +523,8 @@ public class VMCreatorActivity extends AppCompatActivity { null)); Log.e(TAG, "filePicker: " + e.getMessage()); } finally { - runOnUiThread(() -> { - if (!isFinishing() && !isDestroyed()) { - progressDialog.dismiss(); - } - }); + isProcessingFile = false; + runOnUiThread(() -> DialogUtils.safeDismiss(this, progressDialog)); } }); }); @@ -727,6 +723,7 @@ public class VMCreatorActivity extends AppCompatActivity { executor.execute(() -> { try { + isProcessingFile = true; ImageUtils.convertToPng(this, uri, AppConfig.vmFolder + vmID + "/thumbnail.png"); thumbnailPath = AppConfig.vmFolder + vmID + "/thumbnail.png"; @@ -742,10 +739,8 @@ public class VMCreatorActivity extends AppCompatActivity { null, null)); } finally { - runOnUiThread(() -> { - if (!isImportingCVBI && progressDialog.isShowing() && !isFinishing() && !isDestroyed()) - progressDialog.dismiss(); - }); + isProcessingFile = false; + runOnUiThread(() -> DialogUtils.safeDismiss(this, progressDialog)); } }); } @@ -917,7 +912,7 @@ public class VMCreatorActivity extends AppCompatActivity { return; } - isImportingCVBI = true; + isProcessingFile = true; View progressView = LayoutInflater.from(this).inflate(R.layout.dialog_progress_style, null); TextView progressText = progressView.findViewById(R.id.progress_text); @@ -948,11 +943,10 @@ public class VMCreatorActivity extends AppCompatActivity { ); runOnUiThread(() -> { - if (progressDialog.isShowing() && !isFinishing() && !isDestroyed()) - progressDialog.dismiss(); + DialogUtils.safeDismiss(this, progressDialog); if (isFinishing() || isDestroyed()) { - new Thread(() -> FileUtils.deleteDirectory(AppConfig.vmFolder + vmID)).start(); + new Thread(() -> FileUtils.delete(new File(AppConfig.vmFolder + vmID))).start(); return; } @@ -975,7 +969,7 @@ public class VMCreatorActivity extends AppCompatActivity { @SuppressLint("SetTextI18n") private void afterExtractCVBIFile(String _filename) { - isImportingCVBI = false; + isProcessingFile = false; binding.ivIcon.setEnabled(true); try { if (!FileUtils.isFileExists(AppConfig.vmFolder + vmID + "/rom-data.json")) { diff --git a/app/src/main/java/com/vectras/vm/setupwizard/SetupWizard2Activity.java b/app/src/main/java/com/vectras/vm/setupwizard/SetupWizard2Activity.java index a0f621f..c4c724a 100644 --- a/app/src/main/java/com/vectras/vm/setupwizard/SetupWizard2Activity.java +++ b/app/src/main/java/com/vectras/vm/setupwizard/SetupWizard2Activity.java @@ -418,7 +418,7 @@ public class SetupWizard2Activity extends AppCompatActivity { HashMap mmap; mmap = new Gson().fromJson(response, new TypeToken>() { }.getType()); - if (mmap.containsKey("aarch64") && mmap.containsKey("armhf") && mmap.containsKey("amd64") && mmap.containsKey("x86")) { + if (mmap != null && mmap.containsKey("aarch64") && mmap.containsKey("armhf") && mmap.containsKey("amd64") && mmap.containsKey("x86")) { if (DeviceUtils.isArm()) { bootstrapFileLink = Objects.requireNonNull(mmap.get(DeviceUtils.is64bit() ? "aarch64" : "armhf")).toString(); } else { diff --git a/app/src/main/java/com/vectras/vm/utils/DialogUtils.java b/app/src/main/java/com/vectras/vm/utils/DialogUtils.java index 9e5ccb4..43330a4 100644 --- a/app/src/main/java/com/vectras/vm/utils/DialogUtils.java +++ b/app/src/main/java/com/vectras/vm/utils/DialogUtils.java @@ -3,7 +3,7 @@ package com.vectras.vm.utils; import static android.content.Intent.ACTION_VIEW; import android.app.Activity; -import android.app.AlertDialog; +import androidx.appcompat.app.AlertDialog; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -23,7 +23,6 @@ import android.widget.TextView; import androidx.preference.PreferenceManager; import com.google.android.material.color.MaterialColors; -import com.vectras.vm.AppConfig; import com.vectras.vm.R; public class DialogUtils { @@ -247,6 +246,12 @@ public class DialogUtils { return false; } + public static void safeDismiss(Activity activity, AlertDialog dialog) { + if (activity.isFinishing() || activity.isDestroyed()) return; + if (dialog == null || !dialog.isShowing() || dialog.getWindow() == null) return; + if (dialog.getWindow().getDecorView().getWindowToken() != null) dialog.dismiss(); + } + public static void joinTelegram(Context _context) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(_context); if (!prefs.getBoolean("tgDialog", false)) { diff --git a/app/src/main/res/layout/dialog_layout.xml b/app/src/main/res/layout/dialog_layout.xml index ec17cd8..dca2178 100644 --- a/app/src/main/res/layout/dialog_layout.xml +++ b/app/src/main/res/layout/dialog_layout.xml @@ -1,73 +1,72 @@ - - + + + + - + android:gravity="center" + android:paddingVertical="16dp" + android:text="@string/oops" + android:textColor="?attr/colorControlNormal" + android:textSize="22sp" /> + + + - - - - + android:textColorLink="?attr/colorControlNormal" + android:textSize="14sp" /> + - + - - - + + + + diff --git a/web/data/UpdateConfig.json b/web/data/UpdateConfig.json index fd1fcff..55f2351 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": "

3.7.0

\nBugs fixed.", "cancellable": true, - "versionCodeBeta":"77", - "versionNameBeta":"3.7.3", - "versionNameBetas":"3.0.0,3.1.0,3.2.1,3.2.2,3.2.3,3.2.4,3.2.5,3.2.6,3.2.7,3.2.8,3.2.9,3.2.10,3.3.1,3.3.2,3.3.3,3.3.4,3.3.5,3.3.6,3.3.7,3.3.8,3.3.9,3.4.1,3.4.2,3.4.3,3.4.4,3.4.5,3.4.6,3.4.7,3.4.8,3.4.9,3.5.1,3.5.2,3.5.3,3.5.4,3.5.5,3.5.6,3.5.7,3.5.8,3.5.9,3.6.1,3.6.2,3.6.3,3.6.4,3.6.5,3.6.6,3.6.7,3.6.8,3.6.9,3.7.0,3.7.1,3.7.2,3.7.3", + "versionCodeBeta":"78", + "versionNameBeta":"3.7.4", + "versionNameBetas":"3.0.0,3.1.0,3.2.1,3.2.2,3.2.3,3.2.4,3.2.5,3.2.6,3.2.7,3.2.8,3.2.9,3.2.10,3.3.1,3.3.2,3.3.3,3.3.4,3.3.5,3.3.6,3.3.7,3.3.8,3.3.9,3.4.1,3.4.2,3.4.3,3.4.4,3.4.5,3.4.6,3.4.7,3.4.8,3.4.9,3.5.1,3.5.2,3.5.3,3.5.4,3.5.5,3.5.6,3.5.7,3.5.8,3.5.9,3.6.1,3.6.2,3.6.3,3.6.4,3.6.5,3.6.6,3.6.7,3.6.8,3.6.9,3.7.0,3.7.1,3.7.2,3.7.3,3.7.4", "sizeBeta": "45 MB", "urlBeta": "https://github.com/AnBui2004/Vectras-VM-Emu-Android/releases", - "MessageBeta": "

3.7.3

Bugs fixed.", + "MessageBeta": "

3.7.4

Bugs fixed.", "cancellableBeta": true }