diff --git a/app/src/main/java/io/timelimit/android/data/model/ConfigurationItem.kt b/app/src/main/java/io/timelimit/android/data/model/ConfigurationItem.kt
index 15d8336..b60163e 100644
--- a/app/src/main/java/io/timelimit/android/data/model/ConfigurationItem.kt
+++ b/app/src/main/java/io/timelimit/android/data/model/ConfigurationItem.kt
@@ -231,4 +231,5 @@ object ExperimentalFlags {
const val REQUIRE_SYNC_FOR_PARENT_LOGIN = 2048L
const val BLOCK_SPLIT_SCREEN = 4096L
const val HIDE_MANIPULATION_WARNING = 8192L
+ const val ENABLE_SOFT_BLOCKING = 16384L
}
\ No newline at end of file
diff --git a/app/src/main/java/io/timelimit/android/logic/BackgroundTaskLogic.kt b/app/src/main/java/io/timelimit/android/logic/BackgroundTaskLogic.kt
index a0640e3..2d7a290 100644
--- a/app/src/main/java/io/timelimit/android/logic/BackgroundTaskLogic.kt
+++ b/app/src/main/java/io/timelimit/android/logic/BackgroundTaskLogic.kt
@@ -125,8 +125,12 @@ class BackgroundTaskLogic(val appLogic: AppLogic) {
private val isChromeOs = appLogic.context.packageManager.hasSystemFeature(PackageManager.FEATURE_PC)
- private suspend fun openLockscreen(blockedAppPackageName: String, blockedAppActivityName: String?) {
- appLogic.platformIntegration.setShowBlockingOverlay(true, "$blockedAppPackageName:${blockedAppActivityName?.removePrefix(blockedAppPackageName)}")
+ private suspend fun openLockscreen(blockedAppPackageName: String, blockedAppActivityName: String?, enableSoftBlocking: Boolean) {
+ if (enableSoftBlocking) {
+ appLogic.platformIntegration.setShowBlockingOverlay(false)
+ } else {
+ appLogic.platformIntegration.setShowBlockingOverlay(true, "$blockedAppPackageName:${blockedAppActivityName?.removePrefix(blockedAppPackageName)}")
+ }
if (isChromeOs) {
LockActivity.currentInstances.forEach { it.finish() }
@@ -139,7 +143,7 @@ class BackgroundTaskLogic(val appLogic: AppLogic) {
}
}
- if (appLogic.platformIntegration.isAccessibilityServiceEnabled()) {
+ if (appLogic.platformIntegration.isAccessibilityServiceEnabled() && !enableSoftBlocking) {
if (blockedAppPackageName != appLogic.platformIntegration.getLauncherAppPackageName()) {
AccessibilityService.instance?.showHomescreen()
delay(100)
@@ -602,7 +606,11 @@ class BackgroundTaskLogic(val appLogic: AppLogic) {
// handle blocking
if (blockedForegroundApp != null) {
- openLockscreen(blockedForegroundApp.packageName, blockedForegroundApp.activityName)
+ openLockscreen(
+ blockedAppPackageName = blockedForegroundApp.packageName,
+ blockedAppActivityName = blockedForegroundApp.activityName,
+ enableSoftBlocking = deviceRelatedData.experimentalFlags and ExperimentalFlags.ENABLE_SOFT_BLOCKING == ExperimentalFlags.ENABLE_SOFT_BLOCKING
+ )
} else {
appLogic.platformIntegration.setShowBlockingOverlay(false)
}
diff --git a/app/src/main/java/io/timelimit/android/ui/diagnose/DiagnoseExperimentalFlagFragment.kt b/app/src/main/java/io/timelimit/android/ui/diagnose/DiagnoseExperimentalFlagFragment.kt
index 57c1ddd..16a63d8 100644
--- a/app/src/main/java/io/timelimit/android/ui/diagnose/DiagnoseExperimentalFlagFragment.kt
+++ b/app/src/main/java/io/timelimit/android/ui/diagnose/DiagnoseExperimentalFlagFragment.kt
@@ -197,6 +197,12 @@ data class DiagnoseExperimentalFlagItem(
enableFlags = ExperimentalFlags.HIDE_MANIPULATION_WARNING,
disableFlags = ExperimentalFlags.HIDE_MANIPULATION_WARNING,
enable = { true }
+ ),
+ DiagnoseExperimentalFlagItem(
+ label = R.string.diagnose_exf_esb,
+ enableFlags = ExperimentalFlags.ENABLE_SOFT_BLOCKING,
+ disableFlags = ExperimentalFlags.ENABLE_SOFT_BLOCKING,
+ enable = { true }
)
)
}
diff --git a/app/src/main/res/values-de/strings-diagnose.xml b/app/src/main/res/values-de/strings-diagnose.xml
index c0a15a9..5d3abc1 100644
--- a/app/src/main/res/values-de/strings-diagnose.xml
+++ b/app/src/main/res/values-de/strings-diagnose.xml
@@ -67,6 +67,7 @@
Anmeldung von Eltern mit Anmeldeverhinderungskategorie nur nach einer Synchronisation erlauben
Splitscreen automatisch beenden per Bedienhilfe
Manipulationswarnung in der Kategorienliste ausblenden
+ Overlay und Home-Button nicht zum Sperren verwenden
Hintergrundaufgabenschleifenfehler
diff --git a/app/src/main/res/values/strings-diagnose.xml b/app/src/main/res/values/strings-diagnose.xml
index 7646b4b..8674b30 100644
--- a/app/src/main/res/values/strings-diagnose.xml
+++ b/app/src/main/res/values/strings-diagnose.xml
@@ -67,6 +67,7 @@
Only allow login of parent users with limit login category after syncing
Automatically disable splitscreen using the accessibility service
Hide manipulation warning in the category list
+ Do not use a overlay or the home button for blocking
Background task loop exception