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 2a0d6b6..bdc5882 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 @@ -23,6 +23,7 @@ class LauncherAccessibilityService : AccessibilityService() { } companion object { + private const val TAG = "Launcher Accessibility" const val ACTION_LOCK_SCREEN = "ACTION_LOCK_SCREEN" fun lockScreen(context: Context) { @@ -44,17 +45,14 @@ class LauncherAccessibilityService : AccessibilityService() { } fun isEnabled(context: Context): Boolean { - val enabledServices = Settings.Secure.getString(context.contentResolver, Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES) - for (service in enabledServices.split(":")) { - val pkg = service.split("/")[0] - val serviceClass = service.split("/")[1] - if (pkg == context.packageName && serviceClass == LauncherAccessibilityService::class.java.name) { - Log.d("ServiceEnabled", "true") - return true - } - } - Log.d("ServiceEnabled", "false") - return false + val enabledServices = Settings.Secure.getString( + context.contentResolver, + Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES + ) ?: return false + + return enabledServices.split(":") + .contains("${context.packageName}/${LauncherAccessibilityService::class.java.name}") + .also { Log.d(TAG, "Accessibility Service enabled: $it") } } } @@ -67,11 +65,7 @@ class LauncherAccessibilityService : AccessibilityService() { getString(R.string.toast_accessibility_service_not_enabled), Toast.LENGTH_LONG ).show() - startActivity( - Intent(android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS).addFlags( - Intent.FLAG_ACTIVITY_NEW_TASK - ) - ) + requestEnable() return START_NOT_STICKY } @@ -82,6 +76,14 @@ class LauncherAccessibilityService : AccessibilityService() { return super.onStartCommand(intent, flags, startId) } + private fun requestEnable() { + startActivity( + Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS).addFlags( + Intent.FLAG_ACTIVITY_NEW_TASK + ) + ) + } + private fun handleLockScreen() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) { Toast.makeText( @@ -98,7 +100,8 @@ class LauncherAccessibilityService : AccessibilityService() { this, getText(R.string.alert_lock_screen_failed), Toast.LENGTH_LONG - ).show() + ).show() + requestEnable() } } } \ 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 aac7246..41009a8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -247,7 +247,7 @@ Enable the lock screen action No camera with torch detected. Error: Can\'t access torch. - Error: Failed to lock screen. (if you just upgraded/reinstalled the app, try to disable and re-enable the accessibility service in phone settings) + Error: Failed to lock screen. (If you just upgraded the app, try to disable and re-enable the accessibility service in phone settings) μLauncher\'s accessibility service is not enabled. Please enable it in settings Error: Locking the screen using accessibility is not supported on this device. Please use device admin instead. µLauncher - lock screen