diff --git a/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloadService.kt b/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloadService.kt index b766ed03..8e5151c5 100644 --- a/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloadService.kt +++ b/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloadService.kt @@ -33,7 +33,6 @@ class MicrogDownloadService: Service() { private fun downloadMicrog() { runBlocking { launch { - getExternalFilesDir("apk")?.delete() val url = getObjectFromJson( "${PreferenceManager.getDefaultSharedPreferences(this@MicrogDownloadService) .getString("install_url", baseUrl)}/microg.json", "url" diff --git a/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloadService.kt b/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloadService.kt index dd6c06ce..6d031b1c 100644 --- a/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloadService.kt +++ b/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloadService.kt @@ -20,6 +20,7 @@ import com.vanced.manager.utils.InternetTools.getFileNameFromUrl import com.vanced.manager.utils.InternetTools.getObjectFromJson import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking +import java.io.File class VancedDownloadService: Service() { @@ -41,7 +42,7 @@ class VancedDownloadService: Service() { val context = this runBlocking { launch { - getExternalFilesDir("apks")?.delete() + File(getExternalFilesDir("apk")?.path as String).deleteRecursively() val defPrefs = PreferenceManager.getDefaultSharedPreferences(context) val installUrl = defPrefs.getString("install_url", baseUrl) val vancedVer = getObjectFromJson("$installUrl/vanced.json", "version") diff --git a/app/src/main/java/com/vanced/manager/core/installer/AppUninstallerService.kt b/app/src/main/java/com/vanced/manager/core/installer/AppUninstallerService.kt index 24f6eaa8..1775b916 100644 --- a/app/src/main/java/com/vanced/manager/core/installer/AppUninstallerService.kt +++ b/app/src/main/java/com/vanced/manager/core/installer/AppUninstallerService.kt @@ -3,11 +3,13 @@ package com.vanced.manager.core.installer import android.app.Service import android.content.Intent import android.content.pm.PackageInstaller -import android.os.Handler import android.os.IBinder import android.util.Log import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.vanced.manager.ui.fragments.HomeFragment +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking class AppUninstallerService: Service() { @@ -26,16 +28,22 @@ class AppUninstallerService: Service() { } } PackageInstaller.STATUS_SUCCESS -> { - Handler().postDelayed({ - localBroadcastManager.sendBroadcast(Intent(HomeFragment.REFRESH_HOME)) - Log.d("VMpm", "Successfully uninstalled $pkgName") - }, 500) + runBlocking { + launch { + delay(500) + localBroadcastManager.sendBroadcast(Intent(HomeFragment.REFRESH_HOME)) + Log.d("VMpm", "Successfully uninstalled $pkgName") + } + } } PackageInstaller.STATUS_FAILURE -> { - Handler().postDelayed({ - localBroadcastManager.sendBroadcast(Intent(HomeFragment.REFRESH_HOME)) - Log.d("VMpm", "Failed to uninstall $pkgName") - }, 500) + runBlocking { + launch { + delay(500) + localBroadcastManager.sendBroadcast(Intent(HomeFragment.REFRESH_HOME)) + Log.d("VMpm", "Failed to uninstall $pkgName") + } + } } } stopSelf() diff --git a/app/src/main/java/com/vanced/manager/core/installer/RootSplitInstallerService.kt b/app/src/main/java/com/vanced/manager/core/installer/RootSplitInstallerService.kt index 95043c98..95a500d7 100644 --- a/app/src/main/java/com/vanced/manager/core/installer/RootSplitInstallerService.kt +++ b/app/src/main/java/com/vanced/manager/core/installer/RootSplitInstallerService.kt @@ -2,7 +2,6 @@ package com.vanced.manager.core.installer import android.app.Service import android.content.Intent -import android.os.AsyncTask import android.os.Build import android.os.IBinder import android.util.Log @@ -13,6 +12,8 @@ import com.topjohnwu.superuser.Shell import com.vanced.manager.ui.fragments.HomeFragment import com.vanced.manager.utils.AppUtils.sendFailure import com.vanced.manager.utils.FileInfo +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking import java.io.File import java.text.SimpleDateFormat import java.util.* @@ -25,11 +26,13 @@ class RootSplitInstallerService: Service() { override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { Shell.getShell { - AsyncTask.execute { - val apkFilesPath = getExternalFilesDir("apks")?.path - val fileInfoList = apkFilesPath?.let { it1 -> getFileInfoList(it1) } - if (fileInfoList != null) { - installSplitApkFiles(fileInfoList) + runBlocking { + launch { + val apkFilesPath = getExternalFilesDir("apks")?.path + val fileInfoList = apkFilesPath?.let { it1 -> getFileInfoList(it1) } + if (fileInfoList != null) { + installSplitApkFiles(fileInfoList) + } } } } diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/HomeFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/HomeFragment.kt index 1b29b28f..020e3ea9 100644 --- a/app/src/main/java/com/vanced/manager/ui/fragments/HomeFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/fragments/HomeFragment.kt @@ -58,10 +58,7 @@ class HomeFragment : Fragment(), View.OnClickListener { includeVancedLayout.vancedUninstallbtn.setOnClickListener(this@HomeFragment) includeMicrogLayout.microgInstallbtn.setOnClickListener(this@HomeFragment) includeMicrogLayout.microgUninstallbtn.setOnClickListener(this@HomeFragment) - } - - binding.includeChangelogsLayout.changelogButton.setOnClickListener { - cardExpandCollapse() + includeChangelogsLayout.changelogButton.setOnClickListener(this@HomeFragment) } binding.includeVancedLayout.vancedCard.setOnLongClickListener { @@ -148,6 +145,7 @@ class HomeFragment : Fragment(), View.OnClickListener { writeToVariantPref("nonroot", R.anim.slide_in_left, R.anim.slide_out_right) Toast.makeText(requireActivity(), activity?.getString(R.string.root_not_granted), Toast.LENGTH_SHORT).show() } + R.id.changelog_button -> cardExpandCollapse() } } diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/SettingsFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/SettingsFragment.kt index 7986c446..514acbe8 100644 --- a/app/src/main/java/com/vanced/manager/ui/fragments/SettingsFragment.kt +++ b/app/src/main/java/com/vanced/manager/ui/fragments/SettingsFragment.kt @@ -7,6 +7,7 @@ import android.widget.Toast import androidx.preference.* import com.google.firebase.messaging.FirebaseMessaging import com.vanced.manager.R +import java.io.File class SettingsFragment : PreferenceFragmentCompat() { @@ -93,9 +94,10 @@ class SettingsFragment : PreferenceFragmentCompat() { findPreference("clear_files")?.setOnPreferenceClickListener { with(requireActivity()) { - getExternalFilesDir("apk")?.delete() - getExternalFilesDir("apks")?.delete() - Toast.makeText(this, getString(R.string.cleared_files), Toast.LENGTH_SHORT) + listOf("apk", "apks").forEach { dir -> + File(getExternalFilesDir(dir)?.path as String).deleteRecursively() + } + Toast.makeText(this, getString(R.string.cleared_files), Toast.LENGTH_SHORT).show() } true } diff --git a/app/src/main/java/com/vanced/manager/utils/AppUtils.kt b/app/src/main/java/com/vanced/manager/utils/AppUtils.kt index 924d4182..ad752fff 100644 --- a/app/src/main/java/com/vanced/manager/utils/AppUtils.kt +++ b/app/src/main/java/com/vanced/manager/utils/AppUtils.kt @@ -5,12 +5,14 @@ import android.app.Service import android.content.Context import android.content.Intent import android.content.pm.PackageInstaller -import android.os.Handler import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.vanced.manager.R import com.vanced.manager.core.downloader.* import com.vanced.manager.core.installer.* import com.vanced.manager.ui.fragments.HomeFragment +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking object AppUtils { @@ -34,11 +36,14 @@ object AppUtils { fun sendFailure(status: Int, context: Context) { //Delay error broadcast until activity (and fragment) get back to the screen - Handler().postDelayed({ - val intent = Intent(HomeFragment.INSTALL_FAILED) - intent.putExtra("errorMsg", getErrorMessage(status, context)) - LocalBroadcastManager.getInstance(context).sendBroadcast(intent) - }, 500) + runBlocking { + launch { + delay(500) + val intent = Intent(HomeFragment.INSTALL_FAILED) + intent.putExtra("errorMsg", getErrorMessage(status, context)) + LocalBroadcastManager.getInstance(context).sendBroadcast(intent) + } + } } private fun getErrorMessage(status: Int, context: Context): String {