Stop VPN service before installing update
This commit is contained in:
@@ -2,9 +2,11 @@ package io.nekohasekai.sfa.vendor
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import io.nekohasekai.sfa.Application
|
import io.nekohasekai.sfa.Application
|
||||||
|
import io.nekohasekai.sfa.bg.BoxService
|
||||||
import io.nekohasekai.sfa.database.Settings
|
import io.nekohasekai.sfa.database.Settings
|
||||||
import io.nekohasekai.sfa.utils.HookStatusClient
|
import io.nekohasekai.sfa.utils.HookStatusClient
|
||||||
import io.nekohasekai.sfa.xposed.XposedActivation
|
import io.nekohasekai.sfa.xposed.XposedActivation
|
||||||
|
import kotlinx.coroutines.delay
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
enum class InstallMethod {
|
enum class InstallMethod {
|
||||||
@@ -15,6 +17,20 @@ enum class InstallMethod {
|
|||||||
|
|
||||||
object ApkInstaller {
|
object ApkInstaller {
|
||||||
|
|
||||||
|
private suspend fun stopServiceIfRunning() {
|
||||||
|
val commandSocket = File(Application.application.filesDir, "command.sock")
|
||||||
|
if (!commandSocket.exists()) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
BoxService.stop()
|
||||||
|
repeat(20) {
|
||||||
|
delay(100)
|
||||||
|
if (!commandSocket.exists()) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun getConfiguredMethod(): InstallMethod {
|
fun getConfiguredMethod(): InstallMethod {
|
||||||
if (HookStatusClient.status.value?.active == true ||
|
if (HookStatusClient.status.value?.active == true ||
|
||||||
XposedActivation.isActivated(Application.application)
|
XposedActivation.isActivated(Application.application)
|
||||||
@@ -29,6 +45,7 @@ object ApkInstaller {
|
|||||||
}
|
}
|
||||||
|
|
||||||
suspend fun install(context: Context, apkFile: File, method: InstallMethod = getConfiguredMethod()) {
|
suspend fun install(context: Context, apkFile: File, method: InstallMethod = getConfiguredMethod()) {
|
||||||
|
stopServiceIfRunning()
|
||||||
when (method) {
|
when (method) {
|
||||||
InstallMethod.SHIZUKU -> ShizukuInstaller.install(apkFile)
|
InstallMethod.SHIZUKU -> ShizukuInstaller.install(apkFile)
|
||||||
InstallMethod.ROOT -> RootInstaller.install(apkFile)
|
InstallMethod.ROOT -> RootInstaller.install(apkFile)
|
||||||
|
|||||||
Reference in New Issue
Block a user