mirror of
https://github.com/xoureldeen/Vectras-VM-Android.git
synced 2026-05-19 16:42:13 +00:00
- Fixed the crash issue when dragging and dropping files. - Added the Use default BIOS/UEFI option in the virtual machine editing and creation settings. - Added a restriction when selecting the output save directory as the virtual machine's own directory. - Fixed the issue of the virtual machine control panel dialog freezing. - Fixed the issue of creating unused virtual machine directories. - Added automatic cleanup of empty directories and files in the virtual machine directory. - Removed the Hard drive interface, Boot from, Custom params, and Use default BIOS/UEFI options in the general Qemu settings.
145 lines
5.1 KiB
Java
145 lines
5.1 KiB
Java
package com.vectras.vm;
|
|
|
|
import android.content.Intent;
|
|
import android.content.SharedPreferences;
|
|
import android.content.res.Configuration;
|
|
import android.os.Build;
|
|
import android.os.Bundle;
|
|
import android.os.Handler;
|
|
import android.os.Looper;
|
|
import android.util.Log;
|
|
|
|
import androidx.appcompat.app.AppCompatActivity;
|
|
import androidx.appcompat.app.AppCompatDelegate;
|
|
import androidx.core.os.LocaleListCompat;
|
|
import androidx.preference.PreferenceManager;
|
|
|
|
import com.vectras.qemu.MainSettingsManager;
|
|
import com.vectras.qemu.utils.FileInstaller;
|
|
import com.vectras.vm.crashtracker.LastCrashActivity;
|
|
import com.vectras.vm.main.MainActivity;
|
|
import com.vectras.vm.manager.VmFileManager;
|
|
import com.vectras.vm.setupwizard.SetupFeatureCore;
|
|
import com.vectras.vm.setupwizard.SetupWizard2Activity;
|
|
import com.vectras.vm.utils.DeviceUtils;
|
|
import com.vectras.vm.utils.FileUtils;
|
|
import com.vectras.vm.utils.UIUtils;
|
|
|
|
import java.io.File;
|
|
import java.io.FileWriter;
|
|
import java.io.IOException;
|
|
import java.util.Locale;
|
|
|
|
public class SplashActivity extends AppCompatActivity {
|
|
private static final String TAG = "SplashActivity";
|
|
|
|
@Override
|
|
protected void onCreate(Bundle bundle) {
|
|
super.onCreate(bundle);
|
|
UIUtils.edgeToEdge(this);
|
|
setContentView(R.layout.activity_splash);
|
|
UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main));
|
|
|
|
new Thread(() -> {
|
|
setupFolders();
|
|
MainSettingsManager.setOrientationSetting(this, 1);
|
|
setupFiles();
|
|
cleanUp();
|
|
runOnUiThread(this::finishSplash);
|
|
}).start();
|
|
}
|
|
|
|
public void setupFiles() {
|
|
File tmpDir = new File(getFilesDir(), "usr/tmp");
|
|
if (!tmpDir.isDirectory()) {
|
|
if (tmpDir.mkdirs()) {
|
|
FileUtils.chmod(tmpDir, 0771);
|
|
} else {
|
|
Log.e(TAG, "tmpDir: Directory creation failed!");
|
|
}
|
|
}
|
|
|
|
File vDir = new File(com.vectras.vm.AppConfig.maindirpath);
|
|
if (!vDir.exists()) {
|
|
if (!vDir.mkdirs())
|
|
Log.e(TAG, com.vectras.vm.AppConfig.maindirpath + ": Directory creation failed!");
|
|
}
|
|
|
|
File distroDir = new File(AppConfig.internalDataDirPath + "distro");
|
|
if (!distroDir.exists()) {
|
|
if (!distroDir.mkdirs()) Log.e(TAG, "distro: Directory creation failed!");
|
|
}
|
|
|
|
File cvbiDir = new File(FileUtils.getExternalFilesDirectory(this).getPath() + "/cvbi");
|
|
if (!cvbiDir.exists()) {
|
|
if (!cvbiDir.mkdirs()) Log.e(TAG, "cvbi: Directory creation failed!");
|
|
}
|
|
|
|
File sharedDir = new File(AppConfig.sharedFolder);
|
|
if (!sharedDir.exists()) {
|
|
if (!sharedDir.mkdirs())
|
|
Log.e(TAG, AppConfig.sharedFolder + ": Directory creation failed!");
|
|
}
|
|
|
|
File downloadsDir = new File(AppConfig.downloadsFolder);
|
|
if (!downloadsDir.exists()) {
|
|
if (!downloadsDir.mkdirs())
|
|
Log.e(TAG, AppConfig.downloadsFolder + ": Directory creation failed!");
|
|
}
|
|
|
|
File jsonFile = new File(AppConfig.maindirpath
|
|
+ "roms-data.json");
|
|
if (!jsonFile.exists())
|
|
try {
|
|
|
|
if (!jsonFile.exists()) {
|
|
jsonFile.createNewFile();
|
|
}
|
|
|
|
FileWriter writer = new FileWriter(jsonFile);
|
|
writer.write("[]");
|
|
writer.flush();
|
|
writer.close();
|
|
} catch (IOException e) {
|
|
Log.e(TAG, "Create roms-data.json file failed: ", e);
|
|
}
|
|
|
|
//FileInstaller.installFiles(this, true);
|
|
}
|
|
|
|
private void setupFolders() {
|
|
try {
|
|
StartVM.cache = getCacheDir().getAbsolutePath();
|
|
} catch (Exception e) {
|
|
Log.e(TAG, getCacheDir().getAbsolutePath() + ": Directory creation failed!", e);
|
|
}
|
|
}
|
|
|
|
private void cleanUp() {
|
|
FileUtils.delete(AppConfig.vmFolder + "QuickRun");
|
|
VmFileManager.quickCleanUp(this);
|
|
}
|
|
|
|
private void finishSplash() {
|
|
if (MainSettingsManager.getShowLastCrashLog(this)) {
|
|
startActivity(new Intent(this, LastCrashActivity.class));
|
|
} else if (SetupFeatureCore.isInstalledQemu(this)) {
|
|
if (MainSettingsManager.getStandardSetupVersion(this) != AppConfig.standardSetupVersion &&
|
|
!MainSettingsManager.getsetUpWithManualSetupBefore(this)) {
|
|
Intent intent = new Intent();
|
|
intent.putExtra("action", SetupWizard2Activity.ACTION_SYSTEM_UPDATE);
|
|
intent.setClass(this, SetupWizard2Activity.class);
|
|
startActivity(intent);
|
|
} else {
|
|
startActivity(new Intent(this, MainActivity.class));
|
|
}
|
|
} else {
|
|
startActivity(new Intent(this, SetupWizard2Activity.class));
|
|
//For Android 14+
|
|
if (!DeviceUtils.is64bit() || Build.VERSION.SDK_INT >= 34) {
|
|
MainSettingsManager.setVmUi(this, "VNC");
|
|
}
|
|
}
|
|
finish();
|
|
}
|
|
}
|