Split play and other version
This commit is contained in:
@@ -6,7 +6,6 @@ import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.VpnService
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import androidx.activity.result.contract.ActivityResultContract
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.core.content.ContextCompat
|
||||
@@ -17,11 +16,6 @@ import androidx.navigation.ui.AppBarConfiguration
|
||||
import androidx.navigation.ui.setupActionBarWithNavController
|
||||
import androidx.navigation.ui.setupWithNavController
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import com.google.android.play.core.appupdate.AppUpdateManagerFactory
|
||||
import com.google.android.play.core.appupdate.AppUpdateOptions
|
||||
import com.google.android.play.core.install.model.AppUpdateType
|
||||
import com.google.android.play.core.install.model.InstallStatus
|
||||
import com.google.android.play.core.install.model.UpdateAvailability
|
||||
import io.nekohasekai.libbox.Libbox
|
||||
import io.nekohasekai.libbox.ProfileContent
|
||||
import io.nekohasekai.sfa.Application
|
||||
@@ -39,6 +33,7 @@ import io.nekohasekai.sfa.databinding.ActivityMainBinding
|
||||
import io.nekohasekai.sfa.ktx.errorDialogBuilder
|
||||
import io.nekohasekai.sfa.ui.profile.NewProfileActivity
|
||||
import io.nekohasekai.sfa.ui.shared.AbstractActivity
|
||||
import io.nekohasekai.sfa.vendor.Vendor
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
@@ -177,59 +172,11 @@ class MainActivity : AbstractActivity(), ServiceConnection.Callback {
|
||||
}
|
||||
|
||||
private fun startIntegration() {
|
||||
lifecycleScope.launch(Dispatchers.IO) {
|
||||
if (Settings.checkUpdateEnabled) {
|
||||
checkUpdate()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkUpdate() {
|
||||
val appUpdateManager = AppUpdateManagerFactory.create(this)
|
||||
val appUpdateInfoTask = appUpdateManager.appUpdateInfo
|
||||
appUpdateInfoTask.addOnSuccessListener { appUpdateInfo ->
|
||||
when (appUpdateInfo.updateAvailability()) {
|
||||
UpdateAvailability.UPDATE_NOT_AVAILABLE -> {
|
||||
Log.d(TAG, "checkUpdate: not available")
|
||||
if (Vendor.checkUpdateAvailable()) {
|
||||
lifecycleScope.launch(Dispatchers.IO) {
|
||||
if (Settings.checkUpdateEnabled) {
|
||||
Vendor.checkUpdate(this@MainActivity, false)
|
||||
}
|
||||
|
||||
UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS -> {
|
||||
Log.d(TAG, "checkUpdate: in progress, status: ${appUpdateInfo.installStatus()}")
|
||||
when (appUpdateInfo.installStatus()) {
|
||||
InstallStatus.DOWNLOADED -> {
|
||||
appUpdateManager.completeUpdate()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UpdateAvailability.UPDATE_AVAILABLE -> {
|
||||
Log.d(TAG, "checkUpdate: available")
|
||||
if (appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.FLEXIBLE)) {
|
||||
appUpdateManager.startUpdateFlow(
|
||||
appUpdateInfo,
|
||||
this,
|
||||
AppUpdateOptions.newBuilder(AppUpdateType.FLEXIBLE).build()
|
||||
)
|
||||
} else if (appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) {
|
||||
appUpdateManager.startUpdateFlow(
|
||||
appUpdateInfo,
|
||||
this,
|
||||
AppUpdateOptions.newBuilder(AppUpdateType.IMMEDIATE).build()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
UpdateAvailability.UNKNOWN -> {
|
||||
Log.d(TAG, "checkUpdate: unknown")
|
||||
}
|
||||
}
|
||||
}
|
||||
appUpdateInfoTask.addOnFailureListener {
|
||||
Log.e(TAG, "checkUpdate: ", it)
|
||||
}
|
||||
appUpdateManager.registerListener { state ->
|
||||
if (state.installStatus() == InstallStatus.DOWNLOADED) {
|
||||
appUpdateManager.completeUpdate()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.core.view.isGone
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import io.nekohasekai.libbox.Libbox
|
||||
@@ -24,6 +25,7 @@ import io.nekohasekai.sfa.ktx.text
|
||||
import io.nekohasekai.sfa.ui.MainActivity
|
||||
import io.nekohasekai.sfa.ui.debug.DebugActivity
|
||||
import io.nekohasekai.sfa.ui.profileoverride.ProfileOverrideActivity
|
||||
import io.nekohasekai.sfa.vendor.Vendor
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
@@ -58,12 +60,18 @@ class SettingsFragment : Fragment() {
|
||||
reloadSettings()
|
||||
}
|
||||
}
|
||||
if (!Vendor.checkUpdateAvailable()) {
|
||||
binding.appSettingsCard.isVisible = false
|
||||
}
|
||||
binding.checkUpdateEnabled.addTextChangedListener {
|
||||
lifecycleScope.launch(Dispatchers.IO) {
|
||||
val newValue = EnabledType.valueOf(it).boolValue
|
||||
Settings.checkUpdateEnabled = newValue
|
||||
}
|
||||
}
|
||||
binding.checkUpdateButton.setOnClickListener {
|
||||
Vendor.checkUpdate(activity, true)
|
||||
}
|
||||
binding.disableMemoryLimit.addTextChangedListener {
|
||||
lifecycleScope.launch(Dispatchers.IO) {
|
||||
val newValue = EnabledType.valueOf(it).boolValue
|
||||
|
||||
9
app/src/main/java/io/nekohasekai/sfa/vendor/VendorInterface.kt
vendored
Normal file
9
app/src/main/java/io/nekohasekai/sfa/vendor/VendorInterface.kt
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
package io.nekohasekai.sfa.vendor
|
||||
|
||||
import android.app.Activity
|
||||
|
||||
interface VendorInterface {
|
||||
fun checkUpdateAvailable(): Boolean
|
||||
fun checkUpdate(activity: Activity, byUser: Boolean)
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user