diff --git a/DataControl-0.1.0.apk b/DataControl-0.1.0.apk index b74d3e3..da44467 100644 Binary files a/DataControl-0.1.0.apk and b/DataControl-0.1.0.apk differ diff --git a/app/src/main/java/com/jttools/datacontrol/service/FirewallVpnService.kt b/app/src/main/java/com/jttools/datacontrol/service/FirewallVpnService.kt index 39c7b6b..f820edf 100644 --- a/app/src/main/java/com/jttools/datacontrol/service/FirewallVpnService.kt +++ b/app/src/main/java/com/jttools/datacontrol/service/FirewallVpnService.kt @@ -33,6 +33,11 @@ class FirewallVpnService : VpnService() { @Volatile private var running = false override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { + // Le service est toujours lancé via startForegroundService() (y compris pour ACTION_STOP, + // cf. DataMonitorService.applyVpnMode) : le système impose un appel à startForeground() + // dans les 5 secondes qui suivent, sous peine de crash (ForegroundServiceDidNotStartInTimeException + // sur Android 12+), même si le service s'arrête immédiatement après. + startForeground(NOTIF_ID, buildNotification()) when (intent?.action) { ACTION_STOP -> { stopTunnel() @@ -41,7 +46,6 @@ class FirewallVpnService : VpnService() { } ACTION_START_FILTER, ACTION_START_BLOCK_ALL -> { val allowed = intent.getStringArrayListExtra(EXTRA_ALLOWED_PACKAGES)?.toSet() ?: emptySet() - startForeground(NOTIF_ID, buildNotification()) establishTunnel(allowed) } }