crash fixes

This commit is contained in:
X1nto 2021-01-17 17:15:57 +04:00
parent 835ede4de6
commit 66f2d70de5
4 changed files with 30 additions and 20 deletions

View File

@ -23,7 +23,7 @@ open class ProgressModel {
} }
init { init {
installing.value = false installing.postValue(false)
reset() reset()
} }

View File

@ -117,7 +117,7 @@ object DownloadHelper : CoroutineScope by CoroutineScope(Dispatchers.IO) {
fun downloadManager(context: Context) { fun downloadManager(context: Context) {
val url = "https://github.com/YTVanced/VancedManager/releases/latest/download/manager.apk" val url = "https://github.com/YTVanced/VancedManager/releases/latest/download/manager.apk"
download(url,"https://github.com/YTVanced/VancedManager", "manager", "manager.apk", context, onDownloadComplete = { download(url,"https://github.com/YTVanced/VancedManager/", "manager", "manager.apk", context, onDownloadComplete = {
val apk = File("${context.getExternalFilesDir("manager")?.path}/manager.apk") val apk = File("${context.getExternalFilesDir("manager")?.path}/manager.apk")
val uri = val uri =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)

View File

@ -161,23 +161,28 @@ object PackageHelper {
} }
fun install(path: String, context: Context) { fun install(path: String, context: Context) {
val callbackIntent = Intent(context, AppInstallerService::class.java) try {
val pendingIntent = PendingIntent.getService(context, 0, callbackIntent, 0) val callbackIntent = Intent(context, AppInstallerService::class.java)
val packageInstaller = context.packageManager.packageInstaller val pendingIntent = PendingIntent.getService(context, 0, callbackIntent, 0)
val params = PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL) val packageInstaller = context.packageManager.packageInstaller
val sessionId = packageInstaller.createSession(params) val params = PackageInstaller.SessionParams(PackageInstaller.SessionParams.MODE_FULL_INSTALL)
val session = packageInstaller.openSession(sessionId) val sessionId = packageInstaller.createSession(params)
val inputStream: InputStream = FileInputStream(path) val session = packageInstaller.openSession(sessionId)
val outputStream = session.openWrite("install", 0, -1) val inputStream: InputStream = FileInputStream(path)
val buffer = ByteArray(65536) val outputStream = session.openWrite("install", 0, -1)
var c: Int val buffer = ByteArray(65536)
while (inputStream.read(buffer).also { c = it } != -1) { var c: Int
outputStream.write(buffer, 0, c) while (inputStream.read(buffer).also { c = it } != -1) {
outputStream.write(buffer, 0, c)
}
session.fsync(outputStream)
inputStream.close()
outputStream.close()
session.commit(pendingIntent.intentSender)
} catch (e: IOException) {
Log.d(INSTALLER_TAG, e.stackTraceToString())
} }
session.fsync(outputStream)
inputStream.close()
outputStream.close()
session.commit(pendingIntent.intentSender)
} }
private fun installRootMusic(files: ArrayList<FileInfo>, context: Context): Boolean { private fun installRootMusic(files: ArrayList<FileInfo>, context: Context): Boolean {
@ -338,7 +343,6 @@ object PackageHelper {
} catch (e: IOException) { } catch (e: IOException) {
e.printStackTrace() e.printStackTrace()
} }
} finally { } finally {
session?.close() session?.close()
} }

View File

@ -1,10 +1,16 @@
package com.vanced.manager.core.ui.ext package com.vanced.manager.core.ui.ext
import android.util.Log
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
fun Fragment.requireSupportFM() = requireActivity().supportFragmentManager fun Fragment.requireSupportFM() = requireActivity().supportFragmentManager
fun <D : DialogFragment> Fragment.showDialog(dialog: D) { fun <D : DialogFragment> Fragment.showDialog(dialog: D) {
dialog.show(requireSupportFM(), dialog::class.simpleName) try {
dialog.show(requireSupportFM(), dialog::class.simpleName)
} catch (e: IllegalStateException) {
Log.d("VMUI", "Can not perform this action after onSaveInstanceState")
}
} }