chnages to download system
This commit is contained in:
parent
8e65ae8d95
commit
1a9575cf65
|
@ -37,7 +37,7 @@
|
|||
<activity
|
||||
android:name=".ui.MainActivity"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/Theme.MaterialComponents"/>
|
||||
android:theme="@style/DarkTheme.Blue"/>
|
||||
|
||||
<meta-data
|
||||
android:name="preloaded_fonts"
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
package com.vanced.manager.core.downloader
|
||||
|
||||
import android.app.Service
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.IBinder
|
||||
import android.widget.Toast
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||
import androidx.preference.PreferenceManager
|
||||
import com.downloader.Error
|
||||
import com.downloader.OnDownloadListener
|
||||
import com.downloader.OnStartOrResumeListener
|
||||
import com.downloader.PRDownloader
|
||||
import com.vanced.manager.R
|
||||
import com.vanced.manager.core.installer.AppInstaller
|
||||
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
|
||||
import com.vanced.manager.utils.NotificationHelper.cancelNotif
|
||||
import com.vanced.manager.utils.NotificationHelper.createBasicNotif
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.runBlocking
|
||||
|
||||
class MicrogDownloadService: Service() {
|
||||
|
||||
//private var downloadId: Long = 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))
|
||||
|
@ -34,7 +34,6 @@ class MicrogDownloadService: Service() {
|
|||
val context = this
|
||||
runBlocking {
|
||||
launch {
|
||||
val prefs = getSharedPreferences("installPrefs", Context.MODE_PRIVATE)
|
||||
val url = getObjectFromJson(
|
||||
"${PreferenceManager.getDefaultSharedPreferences(context)
|
||||
.getString("install_url", baseUrl)}/microg.json", "url"
|
||||
|
@ -42,43 +41,23 @@ class MicrogDownloadService: Service() {
|
|||
|
||||
//downloadId = download(url, "apk", "microg.apk", this@MicrogDownloadService)
|
||||
|
||||
val channel = 420
|
||||
PRDownloader.download(url, getExternalFilesDir("apk")?.path, "microg.apk")
|
||||
.build()
|
||||
.setOnStartOrResumeListener {
|
||||
OnStartOrResumeListener {
|
||||
prefs?.edit()?.putBoolean("isMicrogDownloading", true)?.apply()
|
||||
}
|
||||
}
|
||||
.setOnProgressListener { progress ->
|
||||
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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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>(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
|
||||
}
|
||||
|
|
|
@ -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<FileInfo>) {
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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>(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
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
}
|
|
@ -120,6 +120,21 @@
|
|||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/microg_downloading_txt"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/microg_downloading"
|
||||
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/microg_installing"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
@ -110,6 +110,21 @@
|
|||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/vanced_downloading_txt"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/vanced_downloading"
|
||||
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/vanced_installing"
|
||||
android:layout_width="match_parent"
|
||||
|
|
Loading…
Reference in New Issue