diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 848515e9..50e511ee 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -37,7 +37,7 @@
+ android:theme="@style/DarkTheme.Blue"/>
val mProgress = progress.currentBytes * 100 / progress.totalBytes
- NotificationHelper.displayDownloadNotif(
- channel,
- mProgress.toInt(),
- getFileNameFromUrl(url),
- this@MicrogDownloadService
- )
+ localBroadcastManager.sendBroadcast(Intent(HomeFragment.MICROG_DOWNLOADING).putExtra("progress", mProgress).putExtra("file", getFileNameFromUrl(url)))
}
.start(object : OnDownloadListener {
override fun onDownloadComplete() {
- prefs?.edit()?.putBoolean("isMicrogDownloading", false)?.apply()
- cancelNotif(channel, this@MicrogDownloadService)
val intent = Intent(this@MicrogDownloadService, AppInstaller::class.java)
intent.putExtra("path", "${getExternalFilesDir("apk")}/microg.apk")
intent.putExtra("pkg", "com.mgoogle.android.gms")
- //val mIntent = Intent(HomeFragment.MICROG_DOWNLOADED)
- //mIntent.action = HomeFragment.MICROG_DOWNLOADED
- //LocalBroadcastManager.getInstance(this@MicrogDownloadService).sendBroadcast(mIntent)
+ localBroadcastManager.sendBroadcast(Intent(HomeFragment.MICROG_INSTALLING))
startService(intent)
}
- override fun onError(error: com.downloader.Error?) {
- prefs?.edit()?.putBoolean("isMicrogDownloading", false)?.apply()
- createBasicNotif(
- getString(R.string.error_downloading, "Microg"),
- channel,
- this@MicrogDownloadService
- )
+ override fun onError(error: Error?) {
+ Toast.makeText(this@MicrogDownloadService, getString(R.string.error_downloading, "microG"), Toast.LENGTH_SHORT).show()
}
})
@@ -102,11 +81,6 @@ class MicrogDownloadService: Service() {
}
*/
- override fun onDestroy() {
- super.onDestroy()
- cancelNotif(420, this)
- //unregisterReceiver(receiver)
- }
override fun onBind(intent: Intent?): IBinder? {
return null
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 5bbacb74..c7869c3b 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
@@ -5,6 +5,7 @@ import android.content.Context
import android.content.Intent
import android.os.Build
import android.os.IBinder
+import android.widget.Toast
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import androidx.preference.PreferenceManager
import com.downloader.Error
@@ -17,9 +18,6 @@ import com.vanced.manager.ui.fragments.HomeFragment
import com.vanced.manager.utils.InternetTools.baseUrl
import com.vanced.manager.utils.InternetTools.getFileNameFromUrl
import com.vanced.manager.utils.InternetTools.getObjectFromJson
-import com.vanced.manager.utils.NotificationHelper.cancelNotif
-import com.vanced.manager.utils.NotificationHelper.createBasicNotif
-import com.vanced.manager.utils.NotificationHelper.displayDownloadNotif
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
@@ -28,6 +26,7 @@ class VancedDownloadService: Service() {
//private var downloadId: Long = 0
//private var apkType: String = "arch"
private var count: Int = 0
+ private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(this) }
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
//registerReceiver(receiver, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE))
@@ -67,14 +66,12 @@ class VancedDownloadService: Service() {
//apkType = type
//downloadId = download(url, "apks", getFileNameFromUrl(url), this@VancedDownloadService)
- val channel = 69
PRDownloader
.download(url, getExternalFilesDir("apks")?.path, getFileNameFromUrl(url))
.build()
- //.setOnStartOrResumeListener { OnStartOrResumeListener { prefs?.edit()?.putBoolean("isVancedDownloading", true)?.apply() } }
.setOnProgressListener { progress ->
val mProgress = progress.currentBytes * 100 / progress.totalBytes
- displayDownloadNotif(channel, mProgress.toInt(), getFileNameFromUrl(url), this@VancedDownloadService)
+ localBroadcastManager.sendBroadcast(Intent(HomeFragment.VANCED_DOWNLOADING).putExtra("progress", mProgress).putExtra("file", getFileNameFromUrl(url)))
}
.start(object : OnDownloadListener {
override fun onDownloadComplete() {
@@ -83,18 +80,16 @@ class VancedDownloadService: Service() {
"theme" -> downloadSplits("lang")
"lang" -> {
count++
- if (count < lang?.count()!!) {
+ if (count < lang?.count()!!)
downloadSplits("lang")
- } else {
+ else
prepareInstall(variant!!)
- cancelNotif(channel, this@VancedDownloadService)
- }
}
}
}
override fun onError(error: Error?) {
- createBasicNotif(getString(R.string.error_downloading, "Vanced"), channel, this@VancedDownloadService)
+ Toast.makeText(this@VancedDownloadService, getString(R.string.error_downloading, "Vanced"), Toast.LENGTH_SHORT).show()
}
})
}
@@ -130,19 +125,13 @@ class VancedDownloadService: Service() {
*/
private fun prepareInstall(variant: String) {
- //LocalBroadcastManager.getInstance(this).sendBroadcast(Intent(HomeFragment.VANCED_DOWNLOADED))
+ localBroadcastManager.sendBroadcast(Intent(HomeFragment.VANCED_INSTALLING))
if (variant == "root")
startService(Intent(this, RootSplitInstallerService::class.java))
else
startService(Intent(this, SplitInstaller::class.java))
}
- override fun onDestroy() {
- super.onDestroy()
- cancelNotif(69, this)
- //unregisterReceiver(receiver)
- }
-
override fun onBind(intent: Intent?): IBinder? {
return null
}
diff --git a/app/src/main/java/com/vanced/manager/core/installer/AppInstallerService.kt b/app/src/main/java/com/vanced/manager/core/installer/AppInstallerService.kt
index d282e875..0c94390a 100644
--- a/app/src/main/java/com/vanced/manager/core/installer/AppInstallerService.kt
+++ b/app/src/main/java/com/vanced/manager/core/installer/AppInstallerService.kt
@@ -1,27 +1,23 @@
package com.vanced.manager.core.installer
import android.app.Service
-import android.content.Context
import android.content.Intent
import android.content.pm.PackageInstaller
import android.os.IBinder
import android.util.Log
import androidx.localbroadcastmanager.content.LocalBroadcastManager
-import com.vanced.manager.R
-import com.vanced.manager.ui.MainActivity
import com.vanced.manager.ui.fragments.HomeFragment
-import com.vanced.manager.utils.AppUtils.getErrorMessage
-//import com.vanced.manager.utils.AppUtils.sendRefreshHome
-import com.vanced.manager.utils.NotificationHelper.createBasicNotif
+import com.vanced.manager.utils.AppUtils.sendFailure
class AppInstallerService: Service() {
+ private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(this) }
+
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
- val notifId = 42
when (intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -999)) {
PackageInstaller.STATUS_PENDING_USER_ACTION -> {
Log.d(TAG, "Requesting user confirmation for installation")
- createBasicNotif(getString(R.string.installing_app, "MicroG"), notifId, this)
+ localBroadcastManager.sendBroadcast(Intent(HomeFragment.MICROG_INSTALLING))
val confirmationIntent = intent.getParcelableExtra(Intent.EXTRA_INTENT)
confirmationIntent?.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
try {
@@ -32,32 +28,14 @@ class AppInstallerService: Service() {
}
PackageInstaller.STATUS_SUCCESS -> {
Log.d(TAG, "Installation succeed")
- LocalBroadcastManager.getInstance(this).sendBroadcast(Intent(HomeFragment.REFRESH_HOME))
- createBasicNotif(getString(
- R.string.successfully_installed,
- "Microg"
- ), notifId, this)
- }
- else -> {
- sendFailure(intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -999))
- createBasicNotif(
- getErrorMessage(intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -999), this),
- notifId,
- this
- )
+ localBroadcastManager.sendBroadcast(Intent(HomeFragment.REFRESH_HOME))
}
+ else -> sendFailure(this, intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -999))
}
stopSelf()
return START_NOT_STICKY
}
- private fun sendFailure(status: Int) {
- val mIntent = Intent(MainActivity.INSTALL_FAILED)
- mIntent.action = MainActivity.INSTALL_FAILED
- mIntent.putExtra("errorMsg", getErrorMessage(status, this))
- LocalBroadcastManager.getInstance(this).sendBroadcast(mIntent)
- }
-
override fun onBind(intent: Intent?): IBinder? {
return null
}
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 2caf9824..ad203c65 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
@@ -11,10 +11,8 @@ import androidx.annotation.WorkerThread
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.topjohnwu.superuser.Shell
import com.vanced.manager.R
-import com.vanced.manager.ui.MainActivity
import com.vanced.manager.ui.fragments.HomeFragment
import com.vanced.manager.utils.FileInfo
-import com.vanced.manager.utils.NotificationHelper.createBasicNotif
import java.io.File
import java.nio.charset.Charset
import java.text.SimpleDateFormat
@@ -24,10 +22,10 @@ import kotlin.collections.ArrayList
class RootSplitInstallerService: Service() {
+ private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(this) }
+
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
Shell.getShell {
- val isRoot = it.isRoot
- Log.d("AppLog", "isRoot ?$isRoot ")
AsyncTask.execute {
val apkFilesPath = getExternalFilesDir("apks")?.path
val fileInfoList = apkFilesPath?.let { it1 -> getFileInfoList(it1) }
@@ -42,9 +40,7 @@ class RootSplitInstallerService: Service() {
@WorkerThread
private fun installSplitApkFiles(apkFiles: ArrayList) {
- val broadcast = LocalBroadcastManager.getInstance(this)
var sessionId: Int?
- val notifId = 666
Log.d("AppLog", "installing split apk files:$apkFiles")
run {
val sessionIdResult = Shell.su("pm install-create -r -t").exec().out
@@ -55,7 +51,6 @@ class RootSplitInstallerService: Service() {
}
for (apkFile in apkFiles) {
Log.d("AppLog", "installing APK : ${apkFile.name} ${apkFile.fileSize} ")
- createBasicNotif(getString(R.string.installing_app, "Vanced"), notifId, this)
val command = arrayOf("su", "-c", "pm", "install-write", "-S", "${apkFile.fileSize}", "$sessionId", apkFile.name)
val process: Process = Runtime.getRuntime().exec(command)
val inputPipe = apkFile.getInputStream()
@@ -78,14 +73,12 @@ class RootSplitInstallerService: Service() {
Log.d("AppLog", "committing...")
val installResult = Shell.su("pm install-commit $sessionId").exec()
if (installResult.isSuccess) {
- broadcast.sendBroadcast(Intent(HomeFragment.REFRESH_HOME))
- broadcast.sendBroadcast(Intent(MainActivity.INSTALL_COMPLETED).putExtra("pkg", "vanced"))
- createBasicNotif(getString(R.string.successfully_installed, "Vanced"), notifId, this)
+ localBroadcastManager.sendBroadcast(Intent(HomeFragment.REFRESH_HOME))
+ localBroadcastManager.sendBroadcast(Intent(HomeFragment.VANCED_INSTALLED).putExtra("pkg", "vanced"))
} else {
- val mIntent = Intent(MainActivity.INSTALL_FAILED)
+ val mIntent = Intent(HomeFragment.INSTALL_FAILED)
mIntent.putExtra("errorMsg", getString(R.string.installation_signature))
- broadcast.sendBroadcast(mIntent)
- createBasicNotif(getString(R.string.installation_signature), notifId, this)
+ localBroadcastManager.sendBroadcast(mIntent)
}
}
diff --git a/app/src/main/java/com/vanced/manager/core/installer/SplitInstallerService.kt b/app/src/main/java/com/vanced/manager/core/installer/SplitInstallerService.kt
index 334e6d64..ceef6493 100644
--- a/app/src/main/java/com/vanced/manager/core/installer/SplitInstallerService.kt
+++ b/app/src/main/java/com/vanced/manager/core/installer/SplitInstallerService.kt
@@ -1,26 +1,22 @@
package com.vanced.manager.core.installer
import android.app.Service
-import android.content.Context
import android.content.Intent
import android.content.pm.PackageInstaller
import android.os.IBinder
import android.util.Log
import androidx.localbroadcastmanager.content.LocalBroadcastManager
-import com.vanced.manager.R
-import com.vanced.manager.ui.MainActivity
import com.vanced.manager.ui.fragments.HomeFragment
-import com.vanced.manager.utils.AppUtils.getErrorMessage
-import com.vanced.manager.utils.AppUtils.sendRefreshHome
-import com.vanced.manager.utils.NotificationHelper.createBasicNotif
+import com.vanced.manager.utils.AppUtils.sendFailure
class SplitInstallerService: Service() {
+ private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(this) }
+
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
- val notifId = 666
when (intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -999)) {
PackageInstaller.STATUS_PENDING_USER_ACTION -> {
- createBasicNotif(getString(R.string.installing_app, "Vanced"), notifId, this)
+ localBroadcastManager.sendBroadcast(Intent(HomeFragment.VANCED_INSTALLING))
Log.d(TAG, "Requesting user confirmation for installation")
val confirmationIntent = intent.getParcelableExtra(Intent.EXTRA_INTENT)
confirmationIntent?.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
@@ -31,32 +27,15 @@ class SplitInstallerService: Service() {
}
PackageInstaller.STATUS_SUCCESS -> {
Log.d(TAG, "Installation succeed")
- LocalBroadcastManager.getInstance(this).sendBroadcast(Intent(HomeFragment.REFRESH_HOME))
- createBasicNotif(
- getString(R.string.successfully_installed, "Vanced"),
- notifId,
- this
- )
- }
- else -> {
- sendFailure(intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -999))
- createBasicNotif(
- getErrorMessage(intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -999), this),
- notifId,
- this
- )
+ localBroadcastManager.sendBroadcast(Intent(HomeFragment.REFRESH_HOME))
}
+ else -> sendFailure(this, intent.getIntExtra(PackageInstaller.EXTRA_STATUS, -999))
+
}
stopSelf()
return START_NOT_STICKY
}
- private fun sendFailure(status: Int) {
- val mIntent = Intent(MainActivity.INSTALL_FAILED)
- mIntent.putExtra("errorMsg", getErrorMessage(status, this))
- LocalBroadcastManager.getInstance(this).sendBroadcast(mIntent)
- }
-
override fun onBind(intent: Intent?): IBinder? {
return null
}
diff --git a/app/src/main/java/com/vanced/manager/ui/MainActivity.kt b/app/src/main/java/com/vanced/manager/ui/MainActivity.kt
index 9c3b0fd2..6cfb3b6c 100644
--- a/app/src/main/java/com/vanced/manager/ui/MainActivity.kt
+++ b/app/src/main/java/com/vanced/manager/ui/MainActivity.kt
@@ -21,6 +21,7 @@ import com.vanced.manager.R
import com.vanced.manager.databinding.ActivityMainBinding
import com.vanced.manager.ui.dialogs.DialogContainer
import com.vanced.manager.ui.fragments.UpdateCheckFragment
+import com.vanced.manager.utils.AppUtils.isInstallationRunning
import com.vanced.manager.utils.InternetTools
import com.vanced.manager.utils.PackageHelper
import com.vanced.manager.utils.ThemeHelper.setFinalTheme
@@ -36,13 +37,6 @@ class MainActivity : AppCompatActivity() {
private val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
when (intent.action) {
- INSTALL_COMPLETED -> {
- if (intent.getStringExtra("package") == "split")
- DialogContainer.launchVanced(this@MainActivity)
- else
- DialogContainer.regularPackageInstalled(getString(R.string.successfully_installed, "MicroG"), this@MainActivity)
- }
- INSTALL_FAILED -> DialogContainer.installAlertBuilder(intent.getStringExtra("errorMsg") as String, this@MainActivity)
}
}
}
@@ -94,25 +88,26 @@ class MainActivity : AppCompatActivity() {
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
- val navHost = findNavController(R.id.bottom_nav_host)
- when (item.itemId) {
- android.R.id.home -> {
- onBackPressed()
- return true
+ if (!isInstallationRunning(this)) {
+ when (item.itemId) {
+ android.R.id.home -> {
+ onBackPressed()
+ return true
+ }
+ R.id.toolbar_about -> {
+ navHost.navigate(R.id.toAboutFragment)
+ return true
+ }
+ R.id.toolbar_settings -> {
+ navHost.navigate(R.id.action_settingsFragment)
+ return true
+ }
+ R.id.dev_settings -> {
+ navHost.navigate(R.id.toDevSettingsFragment)
+ return true
+ }
+ else -> super.onOptionsItemSelected(item)
}
- R.id.toolbar_about -> {
- navHost.navigate(R.id.toAboutFragment)
- return true
- }
- R.id.toolbar_settings -> {
- navHost.navigate(R.id.action_settingsFragment)
- return true
- }
- R.id.dev_settings -> {
- navHost.navigate(R.id.toDevSettingsFragment)
- return true
- }
- else -> super.onOptionsItemSelected(item)
}
return false
}
@@ -127,8 +122,6 @@ class MainActivity : AppCompatActivity() {
private fun registerReceivers() {
val intentFilter = IntentFilter()
- intentFilter.addAction(INSTALL_COMPLETED)
- intentFilter.addAction(INSTALL_FAILED)
localBroadcastManager.registerReceiver(broadcastReceiver, intentFilter)
}
@@ -178,7 +171,5 @@ class MainActivity : AppCompatActivity() {
}
companion object {
- const val INSTALL_COMPLETED = "install_completed"
- const val INSTALL_FAILED = "install_failed"
}
}
diff --git a/app/src/main/java/com/vanced/manager/ui/dialogs/DialogContainer.kt b/app/src/main/java/com/vanced/manager/ui/dialogs/DialogContainer.kt
index b4d116ba..29426046 100644
--- a/app/src/main/java/com/vanced/manager/ui/dialogs/DialogContainer.kt
+++ b/app/src/main/java/com/vanced/manager/ui/dialogs/DialogContainer.kt
@@ -8,7 +8,6 @@ import androidx.core.content.ContextCompat.startActivity
import androidx.preference.PreferenceManager
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.vanced.manager.R
-import com.vanced.manager.ui.MainActivity
import com.vanced.manager.utils.InternetTools.openUrl
import com.vanced.manager.utils.MiuiHelper
@@ -97,16 +96,6 @@ object DialogContainer {
}
}
- fun regularPackageInstalled(msg: String, activity: MainActivity) {
- MaterialAlertDialogBuilder(activity)
- .setTitle(activity.getString(R.string.success))
- .setMessage(msg)
- .setPositiveButton(activity.getString(R.string.close)) { _, _ -> activity.restartActivity() }
- .setCancelable(false)
- .create()
- .show()
- }
-
fun basicDialog(title: String, msg: String, activity: Activity) {
MaterialAlertDialogBuilder(activity)
.setTitle(title)
@@ -116,7 +105,7 @@ object DialogContainer {
.show()
}
- fun launchVanced(activity: MainActivity) {
+ fun launchVanced(activity: Activity) {
val intent = Intent()
intent.component =
if (PreferenceManager.getDefaultSharedPreferences(activity).getString("vanced_variant", "nonroot") == "root")
@@ -133,10 +122,6 @@ object DialogContainer {
}
}
.setNegativeButton(activity.getString(R.string.close)) { dialog, _ -> dialog.dismiss() }
- .setOnDismissListener {
- activity.restartActivity()
- }
- .setCancelable(false)
.create()
.show()
}
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 370a4c42..43104677 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
@@ -21,7 +21,10 @@ import com.vanced.manager.core.downloader.MicrogDownloadService
import com.vanced.manager.core.downloader.VancedDownloadService
import com.vanced.manager.databinding.FragmentHomeBinding
import com.vanced.manager.ui.MainActivity
+import com.vanced.manager.ui.dialogs.DialogContainer.installAlertBuilder
+import com.vanced.manager.ui.dialogs.DialogContainer.launchVanced
import com.vanced.manager.ui.viewmodels.HomeViewModel
+import com.vanced.manager.utils.AppUtils.isInstallationRunning
import com.vanced.manager.utils.PackageHelper
class HomeFragment : Fragment(), View.OnClickListener {
@@ -45,7 +48,7 @@ class HomeFragment : Fragment(), View.OnClickListener {
super.onViewCreated(view, savedInstanceState)
binding.viewModel = viewModel
- val variantPref = getDefaultSharedPreferences(activity).getString("vanced_variant", "nonroot")
+ val variantPref = getDefaultSharedPreferences(requireActivity()).getString("vanced_variant", "nonroot")
with(binding) {
rootSwitch.setOnClickListener(this@HomeFragment)
@@ -92,8 +95,8 @@ class HomeFragment : Fragment(), View.OnClickListener {
}
override fun onClick(v: View?) {
- val prefs = activity?.getSharedPreferences("installPrefs", Context.MODE_PRIVATE)
- val variant = getDefaultSharedPreferences(activity).getString("vanced_variant", "nonroot")
+ val prefs = requireActivity().getSharedPreferences("installPrefs", Context.MODE_PRIVATE)
+ val variant = getDefaultSharedPreferences(requireActivity()).getString("vanced_variant", "nonroot")
val vancedPkgName =
if (variant == "root") {
"com.google.android.youtube"
@@ -103,46 +106,44 @@ class HomeFragment : Fragment(), View.OnClickListener {
when (v?.id) {
R.id.vanced_installbtn -> {
- if (viewModel.microgInstalled.get()!!) {
- if (prefs?.getBoolean("valuesModified", false)!!) {
- activity?.startService(
- Intent(
- activity,
- VancedDownloadService::class.java
+ if (!isInstallationRunning(requireActivity())) {
+ if (viewModel.microgInstalled.get()!!) {
+ if (prefs?.getBoolean("valuesModified", false)!!) {
+ requireActivity().startService(
+ Intent(
+ requireActivity(),
+ VancedDownloadService::class.java
+ )
)
- )
- } else {
- view?.findNavController()?.navigate(R.id.toInstallThemeFragment)
- }
- } else
- Snackbar.make(binding.homeRefresh, R.string.no_microg, Snackbar.LENGTH_LONG)
- .setAction(R.string.install) {
- activity?.startService(Intent(activity, MicrogDownloadService::class.java))
- }.show()
+ } else {
+ view?.findNavController()?.navigate(R.id.toInstallThemeFragment)
+ }
+ } else
+ Snackbar.make(binding.homeRefresh, R.string.no_microg, Snackbar.LENGTH_LONG)
+ .setAction(R.string.install) {
+ requireActivity().startService(
+ Intent(
+ requireActivity(),
+ MicrogDownloadService::class.java
+ )
+ )
+ }.show()
+ }
}
R.id.microg_installbtn -> {
- activity?.startService(Intent(activity, MicrogDownloadService::class.java))
- }
- R.id.microg_uninstallbtn -> activity?.let {
- PackageHelper.uninstallApk(
- "com.mgoogle.android.gms",
- it
- )
- }
- R.id.vanced_uninstallbtn -> activity?.let {
- PackageHelper.uninstallApk(
- vancedPkgName,
- it
- )
+ if (!isInstallationRunning(requireActivity()))
+ requireActivity().startService(Intent(requireActivity(), MicrogDownloadService::class.java))
}
+ R.id.microg_uninstallbtn -> PackageHelper.uninstallApk("com.mgoogle.android.gms", requireActivity())
+ R.id.vanced_uninstallbtn -> PackageHelper.uninstallApk(vancedPkgName, requireActivity())
R.id.nonroot_switch -> writeToVariantPref("nonroot", R.anim.slide_in_left, R.anim.slide_out_right)
R.id.root_switch ->
if (Shell.rootAccess()) {
writeToVariantPref("root", R.anim.slide_in_right, R.anim.slide_out_left)
} else {
writeToVariantPref("nonroot", R.anim.slide_in_left, R.anim.slide_out_right)
- Toast.makeText(activity, activity?.getString(R.string.root_not_granted), Toast.LENGTH_SHORT).show()
+ Toast.makeText(requireActivity(), activity?.getString(R.string.root_not_granted), Toast.LENGTH_SHORT).show()
}
}
}
@@ -189,8 +190,42 @@ class HomeFragment : Fragment(), View.OnClickListener {
private val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
when (intent.action) {
- MICROG_DOWNLOADED -> binding.includeMicrogLayout.microgInstalling.visibility = View.VISIBLE
- VANCED_DOWNLOADED -> binding.includeVancedLayout.vancedInstalling.visibility = View.VISIBLE
+ VANCED_DOWNLOADING -> {
+ with(binding.includeVancedLayout) {
+ vancedDownloading.visibility = View.VISIBLE
+ vancedDownloading.progress = intent.getIntExtra("progress", 0)
+ vancedDownloadingTxt.visibility = View.VISIBLE
+ vancedDownloadingTxt.text = requireActivity().getString(R.string.downloading_file, intent.getStringExtra("file"))
+ }
+ }
+ MICROG_DOWNLOADING -> {
+ with(binding.includeMicrogLayout) {
+ microgDownloading.visibility = View.VISIBLE
+ microgDownloading.progress = intent.getIntExtra("progress", 0)
+ microgDownloadingTxt.visibility = View.VISIBLE
+ microgDownloadingTxt.text = requireActivity().getString(R.string.downloading_file, "microg.apk")
+ }
+ }
+ MICROG_INSTALLING -> {
+ with (binding.includeMicrogLayout) {
+ microgDownloading.visibility = View.GONE
+ microgDownloadingTxt.visibility = View.GONE
+ microgInstalling.visibility = View.VISIBLE
+ }
+ }
+ VANCED_INSTALLING -> {
+ with (binding.includeVancedLayout) {
+ vancedDownloading.visibility = View.GONE
+ vancedDownloadingTxt.visibility = View.GONE
+ vancedInstalling.visibility = View.VISIBLE
+ }
+ }
+ VANCED_INSTALLED -> {
+ binding.includeVancedLayout.vancedInstalling.visibility = View.GONE
+ launchVanced(requireActivity())
+ }
+ MICROG_INSTALLED -> binding.includeMicrogLayout.microgInstalling.visibility = View.GONE
+ INSTALL_FAILED -> installAlertBuilder(intent.getStringExtra("errorMsg") as String, requireActivity())
REFRESH_HOME -> {
Log.d("VMRefresh", "Refreshing home page")
viewModel.fetchData()
@@ -201,8 +236,12 @@ class HomeFragment : Fragment(), View.OnClickListener {
private fun registerReceivers() {
val intentFilter = IntentFilter()
- //intentFilter.addAction(VANCED_DOWNLOADED)
- //intentFilter.addAction(MICROG_DOWNLOADED)
+ intentFilter.addAction(VANCED_DOWNLOADING)
+ intentFilter.addAction(MICROG_DOWNLOADING)
+ intentFilter.addAction(VANCED_INSTALLING)
+ intentFilter.addAction(MICROG_INSTALLING)
+ intentFilter.addAction(VANCED_INSTALLED)
+ intentFilter.addAction(MICROG_INSTALLED)
intentFilter.addAction(REFRESH_HOME)
localBroadcastManager.registerReceiver(broadcastReceiver, intentFilter)
}
@@ -212,20 +251,14 @@ class HomeFragment : Fragment(), View.OnClickListener {
super.onCreateOptionsMenu(menu, inflater)
}
- /*
- private fun disableVancedButton() {
- binding.includeVancedLayout.vancedInstallbtn.apply {
- icon = null
- isEnabled = false
- backgroundTintList = ColorStateList.valueOf(Color.DKGRAY)
- setTextColor(ColorStateList.valueOf(Color.GRAY))
- }
- }
- */
-
companion object {
- const val VANCED_DOWNLOADED = "vanced_downloaded"
- const val MICROG_DOWNLOADED = "microg_downloaded"
+ const val VANCED_DOWNLOADING = "vanced_downloading"
+ const val MICROG_DOWNLOADING = "microg_downloading"
+ const val VANCED_INSTALLING = "vanced_installing"
+ const val MICROG_INSTALLING = "microg_installing"
+ const val VANCED_INSTALLED = "vanced_installed"
+ const val MICROG_INSTALLED = "microg_installed"
+ const val INSTALL_FAILED = "install_failed"
const val REFRESH_HOME = "refresh_home"
}
}
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 01b0b515..95dba728 100644
--- a/app/src/main/java/com/vanced/manager/utils/AppUtils.kt
+++ b/app/src/main/java/com/vanced/manager/utils/AppUtils.kt
@@ -1,5 +1,6 @@
package com.vanced.manager.utils
+import android.app.ActivityManager
import android.content.Context
import android.content.Intent
import android.content.pm.PackageInstaller
@@ -9,10 +10,26 @@ import com.vanced.manager.ui.fragments.HomeFragment
object AppUtils {
- fun sendRefreshHome(context: Context) {
- val intent = Intent()
- intent.action = HomeFragment.REFRESH_HOME
- LocalBroadcastManager.getInstance(context).sendBroadcast(intent)
+ @Suppress("DEPRECATION")
+ fun isInstallationRunning(context: Context): Boolean {
+ val services = arrayOf("VancedDownloadService", "MicrogDownloadService", "AppInstaller", "SplitInstaller", "RootSplitInstallerService")
+ val activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
+ val runningServices = activityManager.getRunningServices(Int.MAX_VALUE)
+
+ services.forEach { name ->
+ runningServices.forEach { info ->
+ if (info.service.className == name) {
+ return true
+ }
+ }
+ }
+ return false
+ }
+
+ fun sendFailure(context: Context, status: Int) {
+ val mIntent = Intent(HomeFragment.INSTALL_FAILED)
+ mIntent.putExtra("errorMsg", getErrorMessage(status, context))
+ LocalBroadcastManager.getInstance(context).sendBroadcast(mIntent)
}
fun getErrorMessage(status: Int, context: Context): String {
diff --git a/app/src/main/java/com/vanced/manager/utils/NotificationHelper.kt b/app/src/main/java/com/vanced/manager/utils/NotificationHelper.kt
deleted file mode 100644
index c7d56217..00000000
--- a/app/src/main/java/com/vanced/manager/utils/NotificationHelper.kt
+++ /dev/null
@@ -1,72 +0,0 @@
-package com.vanced.manager.utils
-
-import android.app.Notification
-import android.app.NotificationChannel
-import android.app.NotificationManager
-import android.content.Context
-import android.os.Build
-import com.vanced.manager.R
-
-object NotificationHelper {
-
- fun createNotifChannel(context: Context) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- val notifChannel = NotificationChannel(
- "69420",
- context.getString(R.string.notif_channel_name),
- NotificationManager.IMPORTANCE_HIGH
- )
- val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
- notificationManager.createNotificationChannel(notifChannel)
- }
- }
-
- fun displayDownloadNotif(channel: Int, progress:Int, filename: String, context: Context) {
- val notifBuilder =
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
- Notification.Builder(context, channel.toString()).setChannelId("69420")
- else
- Notification.Builder(context).setPriority(Notification.PRIORITY_HIGH)
-
- notifBuilder.apply {
- setContentTitle(context.getString(R.string.app_name))
- setContentText(context.getString(R.string.downloading_file, filename))
- setSmallIcon(R.drawable.ic_stat_name)
- setOnlyAlertOnce(true)
- setOngoing(true)
- }
-
- val notif = notifBuilder.build()
- val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
- notificationManager.apply {
- notifBuilder.setProgress(100, progress, false)
- notify(channel, notif)
- }
-
- }
-
- fun createBasicNotif(text: String, channel: Int, context: Context) {
- val notifBuilder =
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
- Notification.Builder(context, channel.toString()).setChannelId("69420")
- else
- Notification.Builder(context).setPriority(Notification.PRIORITY_DEFAULT)
-
- notifBuilder.apply {
- setContentTitle(context.getString(R.string.app_name))
- setContentText(text)
- style = Notification.BigTextStyle().bigText(text)
- setSmallIcon(R.drawable.ic_stat_name)
- }
-
- val notif = notifBuilder.build()
- val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
- notificationManager.notify(channel, notif)
- }
-
- fun cancelNotif(id: Int, context: Context) {
- val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
- notificationManager.cancel(id)
- }
-
-}
\ No newline at end of file
diff --git a/app/src/main/res/layout/include_microg.xml b/app/src/main/res/layout/include_microg.xml
index 211b2e09..720d493f 100644
--- a/app/src/main/res/layout/include_microg.xml
+++ b/app/src/main/res/layout/include_microg.xml
@@ -120,6 +120,21 @@
+
+
+
+
+
+
+
+