1d65d4ffc7
Auto-check GitHub Releases latest on launch (24h throttle), show an update banner on the home screen, download the APK in-app with progress, and trigger the system installer via FileProvider + REQUEST_INSTALL_PACKAGES. - core/UpdateChecker: fetch releases/latest, semver compare, stream APK to externalFilesDir, install via FileProvider (handles MIUI unknown-sources). - SettingsStore: updateCheckEnabled / lastUpdateCheckTime / ignoredVersion. - HomeScreen: update banner + UpdateDialog. - SettingsScreen: "关于与更新" card with auto-check toggle and manual check. - manifest: REQUEST_INSTALL_PACKAGES + FileProvider; new res/xml/file_paths.xml. - version 1.4.2 -> 1.5.0 (versionCode 7 -> 8). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
58 lines
1.9 KiB
Kotlin
58 lines
1.9 KiB
Kotlin
package com.a2i.forwarder
|
|
|
|
import android.app.Application
|
|
import com.a2i.forwarder.core.CarrierBalanceQuery
|
|
import com.a2i.forwarder.core.CarrierDetector
|
|
import com.a2i.forwarder.core.ConnectivityMonitor
|
|
import com.a2i.forwarder.core.LogStore
|
|
import com.a2i.forwarder.core.PhoneCallMonitor
|
|
import com.a2i.forwarder.core.SmsFallbackForwarder
|
|
import com.a2i.forwarder.core.UpdateChecker
|
|
import com.a2i.forwarder.store.AppRulesStore
|
|
import com.a2i.forwarder.store.SettingsStore
|
|
import kotlinx.coroutines.CoroutineScope
|
|
import kotlinx.coroutines.Dispatchers
|
|
import kotlinx.coroutines.SupervisorJob
|
|
|
|
class A2iApp : Application() {
|
|
val appScope: CoroutineScope = CoroutineScope(SupervisorJob() + Dispatchers.Default)
|
|
|
|
lateinit var settings: SettingsStore
|
|
private set
|
|
lateinit var appRules: AppRulesStore
|
|
private set
|
|
lateinit var logStore: LogStore
|
|
private set
|
|
lateinit var phoneCallMonitor: PhoneCallMonitor
|
|
private set
|
|
lateinit var connectivityMonitor: ConnectivityMonitor
|
|
private set
|
|
lateinit var carrierBalanceQuery: CarrierBalanceQuery
|
|
private set
|
|
lateinit var smsForwarder: SmsFallbackForwarder
|
|
private set
|
|
lateinit var updateChecker: UpdateChecker
|
|
private set
|
|
|
|
override fun onCreate() {
|
|
super.onCreate()
|
|
instance = this
|
|
settings = SettingsStore(this, appScope)
|
|
appRules = AppRulesStore(this, appScope)
|
|
logStore = LogStore(this, appScope)
|
|
phoneCallMonitor = PhoneCallMonitor(this)
|
|
phoneCallMonitor.start()
|
|
connectivityMonitor = ConnectivityMonitor(this)
|
|
connectivityMonitor.start()
|
|
carrierBalanceQuery = CarrierBalanceQuery(this)
|
|
smsForwarder = SmsFallbackForwarder(this)
|
|
updateChecker = UpdateChecker(this)
|
|
updateChecker.start()
|
|
}
|
|
|
|
companion object {
|
|
lateinit var instance: A2iApp
|
|
private set
|
|
}
|
|
}
|