diff --git a/app/build.gradle b/app/build.gradle
index a4a687d255..860af252d4 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -20,8 +20,8 @@ android {
applicationId "com.vanced.manager"
minSdkVersion 21
targetSdkVersion 30
- versionCode 13
- versionName "1.3.0b (Arcturus)"
+ versionCode 131
+ versionName "1.3.1 (Arcturus)"
vectorDrawables.useSupportLibrary = true
@@ -88,11 +88,9 @@ def getLanguageNames() {
for (int i = 0; i < langs.size(); i++) {
if (langs[i].length() > 2) {
Locale loc = new Locale(langs[i].substring(0, langs[i].length() - 3), langs[i].substring(langs[i].length() - 2))
- project.logger.lifecycle(loc.getDisplayLanguage(loc).capitalize() + " (" + loc.getDisplayCountry(loc).capitalize() + ")")
langnames.add(loc.getDisplayLanguage(loc).capitalize() + " (" + loc.getDisplayCountry(loc).capitalize() + ")")
} else {
Locale loc = new Locale(langs[i])
- project.logger.lifecycle(loc.getDisplayLanguage(loc).capitalize())
langnames.add(loc.getDisplayLanguage(loc).capitalize())
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b9fbff4c5c..4f38c80b38 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,7 @@
+
@@ -45,6 +46,7 @@
android:name=".ui.MainActivity"
android:label="@string/app_name"
android:theme="@style/DarkTheme.Blue"
+ android:configChanges="layoutDirection|locale"
android:exported="true"/>
() {
diff --git a/app/src/main/java/com/vanced/manager/core/App.kt b/app/src/main/java/com/vanced/manager/core/App.kt
index d4b8ab3b42..79b6b04c41 100644
--- a/app/src/main/java/com/vanced/manager/core/App.kt
+++ b/app/src/main/java/com/vanced/manager/core/App.kt
@@ -2,6 +2,7 @@ package com.vanced.manager.core
import android.app.Application
import android.content.res.Configuration
+import androidx.databinding.ObservableField
import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.beust.klaxon.JsonObject
import com.crowdin.platform.Crowdin
@@ -10,14 +11,14 @@ import com.crowdin.platform.data.remote.NetworkType
import com.downloader.PRDownloader
import com.vanced.manager.utils.InternetTools.baseUrl
import com.vanced.manager.utils.JsonHelper.getJson
-import kotlinx.coroutines.*
+import kotlinx.coroutines.runBlocking
open class App: Application() {
- var vanced: JsonObject? = null
- var music: JsonObject? = null
- var microg: JsonObject? = null
- var manager: JsonObject? = null
+ var vanced = ObservableField()
+ var music = ObservableField()
+ var microg = ObservableField()
+ var manager = ObservableField()
override fun onCreate() {
loadJsonAsync()
@@ -33,12 +34,13 @@ open class App: Application() {
}
- fun loadJsonAsync() {
- val latest = runBlocking { getJson("${getDefaultSharedPreferences(this@App).getString("update_url", baseUrl)}/latest.json") }
- vanced = latest.obj("vanced")
- music = latest.obj("music")
- microg = latest.obj("microg")
- manager = latest.obj("manager")
+ open fun loadJsonAsync() {
+ val latest = runBlocking { getJson("${getDefaultSharedPreferences(this@App).getString("install_url", baseUrl)}/latest.json") }
+
+ vanced.set(latest?.obj("vanced"))
+ music.set(latest?.obj("music"))
+ microg.set(latest?.obj("microg"))
+ manager.set(latest?.obj("manager"))
}
override fun onConfigurationChanged(newConfig: Configuration) {
@@ -46,4 +48,5 @@ open class App: Application() {
Crowdin.onConfigurationChanged()
}
+
}
diff --git a/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloader.kt b/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloader.kt
index b48b1c50be..044c2dc3a3 100644
--- a/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloader.kt
+++ b/app/src/main/java/com/vanced/manager/core/downloader/MicrogDownloader.kt
@@ -6,10 +6,10 @@ import com.downloader.Error
import com.downloader.OnDownloadListener
import com.downloader.PRDownloader
import com.vanced.manager.R
+import com.vanced.manager.core.App
import com.vanced.manager.ui.viewmodels.HomeViewModel.Companion.microgProgress
import com.vanced.manager.utils.AppUtils.mutableInstall
import com.vanced.manager.utils.InternetTools.getFileNameFromUrl
-import com.vanced.manager.utils.InternetTools.getJsonString
import com.vanced.manager.utils.PackageHelper.install
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@@ -17,18 +17,15 @@ import kotlinx.coroutines.launch
object MicrogDownloader {
- //private var downloadId: Long = 0
-
fun downloadMicrog(context: Context) {
CoroutineScope(Dispatchers.IO).launch {
- val url = getJsonString("microg.json", "url", context)
- //downloadId = download(url, "apk", "microg.apk", this@MicrogDownloadService)
+ val url = (context.applicationContext as App).microg.get()?.string("url")
microgProgress.get()?.currentDownload = PRDownloader.download(url, context.getExternalFilesDir("apk")?.path, "microg.apk")
.build()
.setOnStartOrResumeListener {
mutableInstall.value = true
- microgProgress.get()?.downloadingFile?.set(context.getString(R.string.downloading_file, getFileNameFromUrl(url)))
+ microgProgress.get()?.downloadingFile?.set(context.getString(R.string.downloading_file, url?.let { getFileNameFromUrl(it) }))
microgProgress.get()?.showDownloadBar?.set(true)
}
.setOnCancelListener {
@@ -55,19 +52,4 @@ object MicrogDownloader {
}
}
- /*
- private val receiver = object : BroadcastReceiver() {
- override fun onReceive(context: Context?, intent: Intent?) {
- if (intent?.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1) == downloadId) {
- //prefs?.edit()?.putBoolean("isMicrogDownloading", false)?.apply()
- //cancelNotif(channel, this@MicrogDownloadService)
- val bIntent = Intent(this@MicrogDownloadService, AppInstaller::class.java)
- bIntent.putExtra("path", "${getExternalFilesDir("apk")}/microg.apk")
- bIntent.putExtra("pkg", "com.mgoogle.android.gms")
- startService(bIntent)
- }
- }
- }
- */
-
}
diff --git a/app/src/main/java/com/vanced/manager/core/downloader/MusicDownloader.kt b/app/src/main/java/com/vanced/manager/core/downloader/MusicDownloader.kt
index 6917cafd32..ee5073771d 100644
--- a/app/src/main/java/com/vanced/manager/core/downloader/MusicDownloader.kt
+++ b/app/src/main/java/com/vanced/manager/core/downloader/MusicDownloader.kt
@@ -6,10 +6,10 @@ import com.downloader.Error
import com.downloader.OnDownloadListener
import com.downloader.PRDownloader
import com.vanced.manager.R
+import com.vanced.manager.core.App
import com.vanced.manager.ui.viewmodels.HomeViewModel.Companion.musicProgress
import com.vanced.manager.utils.AppUtils.mutableInstall
import com.vanced.manager.utils.InternetTools.getFileNameFromUrl
-import com.vanced.manager.utils.InternetTools.getJsonString
import com.vanced.manager.utils.PackageHelper.install
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@@ -17,14 +17,9 @@ import kotlinx.coroutines.launch
object MusicDownloader {
- //private var downloadId: Long = 0
-
fun downloadMusic(context: Context){
CoroutineScope(Dispatchers.IO).launch {
- val version = getJsonString("music.json", "version", context)
- val url = "https://vanced.app/api/v1/music/v$version.apk"
-
- //downloadId = download(url, "apk", "music.apk", this@MusicDownloadService)
+ val url = "https://vanced.app/api/v1/music/v${(context.applicationContext as App).music.get()?.string("version")}.apk"
musicProgress.get()?.currentDownload = PRDownloader.download(url, context.getExternalFilesDir("apk")?.path, "music.apk")
.build()
@@ -58,19 +53,4 @@ object MusicDownloader {
}
- /*
- private val receiver = object : BroadcastReceiver() {
- override fun onReceive(context: Context?, intent: Intent?) {
- if (intent?.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1) == downloadId) {
- //prefs?.edit()?.putBoolean("isMusicDownloading", false)?.apply()
- //cancelNotif(channel, this@MusicDownloadService)
- val bIntent = Intent(this@MusicDownloadService, AppInstaller::class.java)
- bIntent.putExtra("path", "${getExternalFilesDir("apk")}/music.apk")
- bIntent.putExtra("pkg", "com.mgoogle.android.gms")
- startService(bIntent)
- }
- }
- }
- */
-
}
diff --git a/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloader.kt b/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloader.kt
index 2a1a8761d1..d8c46a97ed 100644
--- a/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloader.kt
+++ b/app/src/main/java/com/vanced/manager/core/downloader/VancedDownloader.kt
@@ -14,10 +14,10 @@ import com.vanced.manager.R
import com.vanced.manager.core.App
import com.vanced.manager.ui.viewmodels.HomeViewModel.Companion.vancedProgress
import com.vanced.manager.utils.AppUtils.mutableInstall
+import com.vanced.manager.utils.AppUtils.vancedRootPkg
import com.vanced.manager.utils.InternetTools
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.PackageHelper.getPkgVerCode
import com.vanced.manager.utils.PackageHelper.installVanced
import com.vanced.manager.utils.PackageHelper.installVancedRoot
@@ -28,6 +28,7 @@ import kotlinx.coroutines.runBlocking
import java.io.File
import java.io.IOException
import java.security.MessageDigest
+import java.util.*
object VancedDownloader {
@@ -42,18 +43,15 @@ object VancedDownloader {
private var lang: Array? = null
private lateinit var themePath: String
-
- //private var downloadId: Long = 0
- //private var apkType: String = "arch"
+
private var count: Int = 0
private var hashUrl = ""
- private const val yPkg = "com.google.android.youtube"
private var vancedVersionCode = 0
- private val vancedVersion by lazy { runBlocking { getObjectFromJson("$installUrl/vanced.json", "version") }}
+ private var vancedVersion: String? = null
fun downloadVanced(context: Context){
- //registerReceiver(receiver, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE))
+ val app = context.applicationContext as App
File(context.getExternalFilesDir("apks")?.path as String).deleteRecursively()
defPrefs = getDefaultSharedPreferences(context)
installUrl = defPrefs.getString("install_url", baseUrl)
@@ -61,6 +59,7 @@ object VancedDownloader {
variant = defPrefs.getString("vanced_variant", "nonroot")
lang = prefs.getString("lang", "en")?.split(", ")?.toTypedArray()
theme = prefs.getString("theme", "dark")
+ vancedVersion = app.vanced.get()?.string("version")
themePath = "$installUrl/apks/v$vancedVersion/$variant/Theme"
hashUrl = "apks/v$vancedVersion/$variant/Theme/hash.json"
//newInstaller = defPrefs.getBoolean("new_installer", false)
@@ -70,8 +69,8 @@ object VancedDownloader {
Build.SUPPORTED_ABIS.contains("arm64-v8a") -> "arm64_v8a"
else -> "armeabi_v7a"
}
- val app = context.applicationContext as App
- vancedVersionCode = app.vanced?.int("versionCode") ?: 0
+
+ vancedVersionCode = app.vanced.get()?.int("versionCode") ?: 0
downloadSplits(context)
}
@@ -90,11 +89,7 @@ object VancedDownloader {
else -> throw NotImplementedError("This type of APK is NOT valid. What the hell did you even do?")
}
- //apkType = type
- //downloadId = download(url, "apks", getFileNameFromUrl(url), this@VancedDownloadService)
-
- vancedProgress.get()?.currentDownload = PRDownloader
- .download(url, context.getExternalFilesDir("apks")?.path, getFileNameFromUrl(url))
+ vancedProgress.get()?.currentDownload = PRDownloader.download(url, context.getExternalFilesDir("apks")?.path, getFileNameFromUrl(url))
.build()
.setOnStartOrResumeListener {
mutableInstall.value = true
@@ -114,7 +109,7 @@ object VancedDownloader {
"theme" ->
if (variant == "root") {
if (validateTheme(context)) {
- if(downloadStockCheck(context))
+ if (downloadStockCheck(context))
downloadSplits(context, "arch")
else
prepareInstall(variant!!, context)
@@ -143,6 +138,7 @@ object VancedDownloader {
else
prepareInstall(variant!!, context)
} else {
+ count = 0
mutableInstall.value = false
vancedProgress.get()?.showDownloadBar?.set(false)
Toast.makeText(context, context.getString(R.string.error_downloading, getFileNameFromUrl(url)), Toast.LENGTH_SHORT).show()
@@ -154,7 +150,7 @@ object VancedDownloader {
private fun downloadStockCheck(context: Context) :Boolean {
return try {
- getPkgVerCode(yPkg,context.packageManager) != vancedVersionCode
+ getPkgVerCode(vancedRootPkg, context.packageManager) != vancedVersionCode
} catch (e: Exception) {
true
}
@@ -171,40 +167,13 @@ object VancedDownloader {
return checkSHA256(sha256Val!!,themeF)
}
- /*
- private val receiver = object : BroadcastReceiver() {
- override fun onReceive(context: Context?, intent: Intent?) {
- val prefs = context?.getSharedPreferences("installPrefs", Context.MODE_PRIVATE)
- val variant = PreferenceManager.getDefaultSharedPreferences(this@VancedDownloadService).getString("vanced_variant", "nonroot")
- val lang = prefs?.getString("lang", "en")
- if (intent?.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1) == downloadId) {
- when (apkType) {
- "arch" -> downloadSplits(context, "theme")
- "theme" -> downloadSplits(context, "lang")
- "lang" -> {
- if (lang == "en") {
- prepareInstall(variant!!)
- //cancelNotif(channel, this@VancedDownloadService)
- } else {
- downloadSplits(context, "enlang")
- }
- }
- "enlang" -> {
- prepareInstall(variant!!)
- //cancelNotif(channel, this@VancedDownloadService)
- }
- }
- }
- }
- }
- */
-
private fun prepareInstall(variant: String, context: Context) {
+ count = 0
vancedProgress.get()?.showDownloadBar?.set(false)
vancedProgress.get()?.showInstallCircle?.set(true)
FirebaseAnalytics.getInstance(context).logEvent(FirebaseAnalytics.Event.SELECT_ITEM) {
- param("Vanced Variant", variant)
- theme?.let { param("Vanced Theme", it) }
+ param("vanced_variant", variant)
+ theme?.let { param("vanced_theme", it) }
}
if (variant == "root")
installVancedRoot(context)
@@ -218,7 +187,7 @@ object VancedDownloader {
// Generate the checksum
val sum = generateChecksum(dataBuffer)
- sum == sha256
+ sum.toLowerCase(Locale.ENGLISH) == sha256.toLowerCase(Locale.ENGLISH)
} catch (e: Exception) {
e.printStackTrace()
false
diff --git a/app/src/main/java/com/vanced/manager/core/firebase/CloudMessaging.kt b/app/src/main/java/com/vanced/manager/core/firebase/CloudMessaging.kt
index 9b52333d71..15625f1491 100644
--- a/app/src/main/java/com/vanced/manager/core/firebase/CloudMessaging.kt
+++ b/app/src/main/java/com/vanced/manager/core/firebase/CloudMessaging.kt
@@ -3,7 +3,7 @@ package com.vanced.manager.core.firebase
import android.util.Log
import com.google.firebase.messaging.FirebaseMessagingService
-class CloudMessaging: FirebaseMessagingService() {
+class CloudMessaging : FirebaseMessagingService() {
override fun onNewToken(p0: String) {
super.onNewToken(p0)
diff --git a/app/src/main/java/com/vanced/manager/model/DataModel.kt b/app/src/main/java/com/vanced/manager/model/DataModel.kt
index 79fc50c2a7..c6d3370d3d 100644
--- a/app/src/main/java/com/vanced/manager/model/DataModel.kt
+++ b/app/src/main/java/com/vanced/manager/model/DataModel.kt
@@ -15,18 +15,10 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
open class DataModel(
- private val jsonObject: JsonObject?,
- app: String,
+ private val jsonObject: ObservableField,
+ private val appPkg: String,
private val context: Context
) {
-
- private val appPkg =
- when (app) {
- "vanced" -> "com.vanced.android.youtube"
- "vancedRoot" -> "com.google.android.youtube"
- "microg" -> "com.mgoogle.android.gms"
- else -> "com.vanced.android.apps.youtube.music"
- }
private val versionCode = ObservableInt()
private val installedVersionCode = ObservableInt()
@@ -40,13 +32,13 @@ open class DataModel(
fun fetch() = CoroutineScope(Dispatchers.IO).launch {
isAppInstalled.set(isPackageInstalled(appPkg, context.packageManager))
- versionName.set(jsonObject?.string("version")?.removeSuffix("-vanced") ?: context.getString(R.string.unavailable))
+ versionName.set(jsonObject.get()?.string("version")?.removeSuffix("-vanced") ?: context.getString(R.string.unavailable))
installedVersionName.set(getPkgVersionName(isAppInstalled.get(), appPkg))
- versionCode.set(jsonObject?.int("versionCode") ?: 0)
+ versionCode.set(jsonObject.get()?.int("versionCode") ?: 0)
installedVersionCode.set(getPkgVersionCode(isAppInstalled.get(), appPkg))
buttonTxt.set(compareInt(installedVersionCode.get(), versionCode.get()))
buttonIcon.set(compareIntDrawable(installedVersionCode.get(), versionCode.get()))
- changelog.set(jsonObject?.string("changelog") ?: context.getString(R.string.unavailable))
+ changelog.set(jsonObject.get()?.string("changelog") ?: context.getString(R.string.unavailable))
}
init {
@@ -54,8 +46,9 @@ open class DataModel(
}
private fun getPkgVersionName(toCheck: Boolean, pkg: String): String {
+ val pm = context.packageManager
return if (toCheck) {
- context.packageManager.getPackageInfo(pkg, 0).versionName.removeSuffix("-vanced")
+ pm.getPackageInfo(pkg, 0).versionName.removeSuffix("-vanced")
} else {
context.getString(R.string.unavailable)
}
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 5381509abd..c57b01c1d9 100644
--- a/app/src/main/java/com/vanced/manager/ui/MainActivity.kt
+++ b/app/src/main/java/com/vanced/manager/ui/MainActivity.kt
@@ -2,6 +2,7 @@ package com.vanced.manager.ui
import android.content.Context
import android.content.Intent
+import android.content.res.Configuration
import android.os.Bundle
import android.util.Log
import android.view.MenuItem
@@ -27,9 +28,6 @@ import com.vanced.manager.utils.InternetTools
import com.vanced.manager.utils.LanguageContextWrapper
import com.vanced.manager.utils.PackageHelper
import com.vanced.manager.utils.ThemeHelper.setFinalTheme
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.launch
class MainActivity : AppCompatActivity() {
@@ -117,6 +115,17 @@ class MainActivity : AppCompatActivity() {
super.attachBaseContext(LanguageContextWrapper.wrap(newBase))
}
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ recreate() //restarting activity to recreate viewmodels, otherwise some text won't update
+ }
+
+ override fun recreate() {
+ //needed for setting language smh
+ startActivity(Intent(this, this::class.java))
+ finish()
+ }
+
private fun initDialogs() {
val prefs = getDefaultSharedPreferences(this)
val variant = prefs.getString("vanced_variant", "nonroot")
@@ -148,10 +157,8 @@ class MainActivity : AppCompatActivity() {
}
private fun checkUpdates() {
- CoroutineScope(Dispatchers.Main).launch {
- if (InternetTools.isUpdateAvailable()) {
- UpdateCheckFragment().show(supportFragmentManager, "UpdateCheck")
- }
+ if (InternetTools.isUpdateAvailable(this)) {
+ UpdateCheckFragment().show(supportFragmentManager, "UpdateCheck")
}
}
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 8496b48411..a1fc44bb46 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
@@ -73,7 +73,6 @@ object DialogContainer {
}
}
- //Easter Egg
fun statementFalse(context: Context) {
MaterialAlertDialogBuilder(context).apply {
setTitle("Wait what?")
diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/DevSettingsFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/DevSettingsFragment.kt
index 89e0db4431..3d90d34fba 100644
--- a/app/src/main/java/com/vanced/manager/ui/fragments/DevSettingsFragment.kt
+++ b/app/src/main/java/com/vanced/manager/ui/fragments/DevSettingsFragment.kt
@@ -1,23 +1,15 @@
package com.vanced.manager.ui.fragments
import android.content.Intent
-import android.net.Uri
import android.os.Build
import android.os.Bundle
-import android.util.Log
-import android.widget.Toast
import androidx.appcompat.app.AlertDialog
-import androidx.core.content.FileProvider
import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.PreferenceManager
-import com.downloader.OnDownloadListener
-import com.downloader.PRDownloader
import com.vanced.manager.R
import com.vanced.manager.ui.MainActivity
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.runBlocking
-import java.io.File
+import com.vanced.manager.utils.DownloadHelper.downloadManager
class DevSettingsFragment: PreferenceFragmentCompat() {
@@ -45,6 +37,12 @@ class DevSettingsFragment: PreferenceFragmentCompat() {
true
}
+
+ findPreference("install_url")?.setOnPreferenceClickListener {
+ URLChangeFragment().show(childFragmentManager.beginTransaction(), "Install URL")
+ true
+ }
+
val supportedAbis: Array = Build.SUPPORTED_ABIS
findPreference("device_arch")?.summary =
@@ -58,38 +56,7 @@ class DevSettingsFragment: PreferenceFragmentCompat() {
val forceUpdate: Preference? = findPreference("force_update")
forceUpdate?.setOnPreferenceClickListener {
- runBlocking {
- launch {
- val url = "https://github.com/YTVanced/VancedManager/releases/latest/download/manager.apk"
- //downloadId = activity?.let { download(url, "apk", "manager.apk", it) }!!
- PRDownloader.download(url, activity?.getExternalFilesDir("apk")?.path, "manager.apk")
- .build()
- .start(object : OnDownloadListener {
- override fun onDownloadComplete() {
- activity?.let {
- val apk = File("${activity?.getExternalFilesDir("apk")?.path}/manager.apk")
- val uri =
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
- FileProvider.getUriForFile(activity!!, "${activity?.packageName}.provider", apk)
- else
- Uri.fromFile(apk)
-
- val intent = Intent(Intent.ACTION_VIEW)
- intent.setDataAndType(uri, "application/vnd.android.package-archive")
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
- intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
- startActivity(intent)
- }
- }
-
- override fun onError(error: com.downloader.Error?) {
- Toast.makeText(activity, error.toString(), Toast.LENGTH_SHORT).show()
- Log.e("VMUpgrade", error.toString())
- }
-
- })
- }
- }
+ downloadManager(true, requireActivity())
true
}
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 4d12156268..66f0ac11d2 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
@@ -22,12 +22,15 @@ import com.vanced.manager.adapter.VariantAdapter
import com.vanced.manager.databinding.FragmentHomeBinding
import com.vanced.manager.ui.dialogs.DialogContainer.installAlertBuilder
import com.vanced.manager.ui.viewmodels.HomeViewModel
-import com.vanced.manager.utils.AppUtils
+import com.vanced.manager.ui.viewmodels.HomeViewModelFactory
+import com.vanced.manager.utils.AppUtils.installing
open class HomeFragment : Fragment() {
private lateinit var binding: FragmentHomeBinding
- private val viewModel: HomeViewModel by viewModels()
+ private val viewModel: HomeViewModel by viewModels {
+ HomeViewModelFactory(requireActivity())
+ }
private val localBroadcastManager by lazy { LocalBroadcastManager.getInstance(requireActivity()) }
private val tabListener = object : TabLayout.OnTabSelectedListener {
@@ -78,7 +81,7 @@ open class HomeFragment : Fragment() {
mainTablayout.getTabAt(if (getDefaultSharedPreferences(requireActivity()).getString("vanced_variant", "nonroot") == "root") 1 else 0)?.select()
}
- AppUtils.installing.observe(viewLifecycleOwner, { value ->
+ installing.observe(viewLifecycleOwner, { value ->
if (value) hideTab() else showTab()
})
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 cf07ed0d52..95493daa54 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
@@ -115,11 +115,6 @@ class SettingsFragment : PreferenceFragmentCompat() {
true
}
- findPreference("install_url")?.setOnPreferenceClickListener {
- URLChangeFragment().show(childFragmentManager.beginTransaction(), "Install URL")
- true
- }
-
findPreference("clear_files")?.setOnPreferenceClickListener {
with(requireActivity()) {
listOf("apk", "apks").forEach { dir ->
diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/URLChangeFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/URLChangeFragment.kt
index cf5d4f5d03..3edf1d4af7 100644
--- a/app/src/main/java/com/vanced/manager/ui/fragments/URLChangeFragment.kt
+++ b/app/src/main/java/com/vanced/manager/ui/fragments/URLChangeFragment.kt
@@ -9,7 +9,7 @@ import android.view.ViewGroup
import android.widget.EditText
import android.widget.TextView
import androidx.fragment.app.DialogFragment
-import androidx.preference.PreferenceManager
+import androidx.preference.PreferenceManager.getDefaultSharedPreferences
import com.google.android.material.button.MaterialButton
import com.vanced.manager.R
import com.vanced.manager.utils.InternetTools.baseUrl
@@ -29,8 +29,7 @@ class URLChangeFragment : DialogFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val urlField = view.findViewById(R.id.url_input)
- val prefs = PreferenceManager.getDefaultSharedPreferences(activity)
- urlField.setText(prefs.getString("install_url", baseUrl), TextView.BufferType.EDITABLE)
+ urlField.setText(getDefaultSharedPreferences(requireActivity()).getString("install_url", baseUrl), TextView.BufferType.EDITABLE)
view.findViewById(R.id.url_save).setOnClickListener {
val finalUrl =
if (urlField.text.startsWith("https://") || urlField.text.startsWith("http://"))
@@ -38,14 +37,14 @@ class URLChangeFragment : DialogFragment() {
else
"https://${urlField.text}".removeSuffix("/")
-
- prefs.edit().putString("install_url", finalUrl).apply()
- dismiss()
- }
- view.findViewById(R.id.url_reset).setOnClickListener {
- prefs.edit().putString("install_url", baseUrl).apply()
- dismiss()
+ saveUrl(finalUrl)
}
+ view.findViewById(R.id.url_reset).setOnClickListener {saveUrl(baseUrl)}
+ }
+
+ private fun saveUrl(url: String) {
+ getDefaultSharedPreferences(requireActivity()).edit().putString("install_url", url).apply()
+ dismiss()
}
}
diff --git a/app/src/main/java/com/vanced/manager/ui/fragments/UpdateCheckFragment.kt b/app/src/main/java/com/vanced/manager/ui/fragments/UpdateCheckFragment.kt
index e899004db3..0ddc59054d 100644
--- a/app/src/main/java/com/vanced/manager/ui/fragments/UpdateCheckFragment.kt
+++ b/app/src/main/java/com/vanced/manager/ui/fragments/UpdateCheckFragment.kt
@@ -1,34 +1,21 @@
package com.vanced.manager.ui.fragments
-import android.content.Intent
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
-import android.net.Uri
-import android.os.Build
import android.os.Bundle
-import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
-import android.widget.ProgressBar
import android.widget.TextView
-import android.widget.Toast
-import androidx.core.content.FileProvider
import androidx.fragment.app.DialogFragment
-import com.downloader.OnDownloadListener
-import com.downloader.PRDownloader
import com.google.android.material.button.MaterialButton
import com.vanced.manager.R
+import com.vanced.manager.utils.DownloadHelper.downloadManager
import com.vanced.manager.utils.InternetTools.isUpdateAvailable
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.runBlocking
-import java.io.File
class UpdateCheckFragment : DialogFragment() {
- //private var downloadId: Long = 0
-
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
@@ -41,7 +28,6 @@ class UpdateCheckFragment : DialogFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- //activity?.registerReceiver(receiver, IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE))
checkUpdates()
view.findViewById