diff --git a/app/src/main/java/de/jrpie/android/launcher/actions/lock/LauncherAccessibilityService.kt b/app/src/main/java/de/jrpie/android/launcher/actions/lock/LauncherAccessibilityService.kt index 6c0a28c..9e018d1 100644 --- a/app/src/main/java/de/jrpie/android/launcher/actions/lock/LauncherAccessibilityService.kt +++ b/app/src/main/java/de/jrpie/android/launcher/actions/lock/LauncherAccessibilityService.kt @@ -1,12 +1,14 @@ package de.jrpie.android.launcher.actions.lock import android.accessibilityservice.AccessibilityService +import android.app.AlertDialog import android.content.Context import android.content.Intent import android.os.Build import android.provider.Settings import android.util.Log import android.view.accessibility.AccessibilityEvent +import android.widget.CheckBox import android.widget.Toast import de.jrpie.android.launcher.R @@ -50,6 +52,32 @@ class LauncherAccessibilityService : AccessibilityService() { .contains("${context.packageName}/${LauncherAccessibilityService::class.java.name}") .also { Log.d(TAG, "Accessibility Service enabled: $it") } } + + fun showEnableDialog(context: Context) { + AlertDialog.Builder(context, R.style.AlertDialogDanger).apply { + setView(R.layout.dialog_consent_accessibility) + setTitle(R.string.dialog_consent_accessibility_title) + setPositiveButton(R.string.dialog_consent_accessibility_ok) { _, _ -> + lockScreen(context) + } + setNegativeButton(R.string.dialog_consent_accessibility_cancel) { _, _ -> } + }.create().also { it.show() }.apply { + val buttonOk = getButton(AlertDialog.BUTTON_POSITIVE) + val checkboxes = listOf( + findViewById(R.id.dialog_consent_accessibility_checkbox_1), + findViewById(R.id.dialog_consent_accessibility_checkbox_2), + findViewById(R.id.dialog_consent_accessibility_checkbox_3), + findViewById(R.id.dialog_consent_accessibility_checkbox_4), + ) + val update = { + buttonOk.isEnabled = checkboxes.map { b -> b?.isChecked == true }.all { it } + } + update() + checkboxes.forEach { c -> + c?.setOnClickListener { _ -> update() } + } + } + } } diff --git a/app/src/main/java/de/jrpie/android/launcher/actions/lock/LockMethod.kt b/app/src/main/java/de/jrpie/android/launcher/actions/lock/LockMethod.kt index 4e1fb15..16572e5 100644 --- a/app/src/main/java/de/jrpie/android/launcher/actions/lock/LockMethod.kt +++ b/app/src/main/java/de/jrpie/android/launcher/actions/lock/LockMethod.kt @@ -22,7 +22,7 @@ enum class LockMethod( ACCESSIBILITY_SERVICE( LauncherAccessibilityService::lockScreen, LauncherAccessibilityService::isEnabled, - LauncherAccessibilityService::lockScreen + LauncherAccessibilityService::showEnableDialog ), ; diff --git a/app/src/main/res/color/text_color_toggle.xml b/app/src/main/res/color/text_color_toggle.xml new file mode 100644 index 0000000..3a282bb --- /dev/null +++ b/app/src/main/res/color/text_color_toggle.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_consent_accessibility.xml b/app/src/main/res/layout/dialog_consent_accessibility.xml new file mode 100644 index 0000000..cd2a19d --- /dev/null +++ b/app/src/main/res/layout/dialog_consent_accessibility.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fcfb785..38a3780 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -298,4 +298,12 @@ Cancel Color Choose color + I am aware that this will grant far-reaching privileges to µLauncher. + I am aware that other options exist (using device administrator privileges or the power button). + I consent to µLauncher using the accessibility service to provide functionality unrelated to accessibility. + I consent to µLauncher not collecting any data. + far-reaching privileges to µLauncher.
µLauncher will use these privileges only to lock the screen. µLauncher will never collect any data. In particular, µLauncher does not use the accessibility service to collect any data.]]>
+ Activating the Accessibility Service + Activate Accessibility Service + Cancel diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index ca18e65..2dcd8ad 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -116,19 +116,18 @@ #000 - - - - - + +