From 4c19dbbd7f47dda5e82cdafc4cbd516805180295 Mon Sep 17 00:00:00 2001 From: HeCodes2Much Date: Thu, 9 May 2024 20:12:40 +0100 Subject: [PATCH] Fix: Fixed the Accessibility settings if required. --- .../accessibility/MyAccessibilityService.kt | 29 +++++++++++++++ .../launcher/helper/AppHelper.kt | 35 +++++++++++-------- .../launcher/ui/home/HomeFragment.kt | 1 + 3 files changed, 50 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/accessibility/MyAccessibilityService.kt b/app/src/main/java/com/github/droidworksstudio/launcher/accessibility/MyAccessibilityService.kt index a9d7b42..9880dfe 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/accessibility/MyAccessibilityService.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/accessibility/MyAccessibilityService.kt @@ -2,10 +2,14 @@ package com.github.droidworksstudio.launcher.accessibility import android.accessibilityservice.AccessibilityService import android.accessibilityservice.AccessibilityServiceInfo +import android.content.Context import android.content.Intent import android.os.Build +import android.provider.Settings import android.view.accessibility.AccessibilityEvent import androidx.annotation.RequiresApi +import com.github.droidworksstudio.launcher.R +import com.google.android.material.dialog.MaterialAlertDialogBuilder import java.lang.ref.WeakReference class MyAccessibilityService : AccessibilityService() { @@ -65,7 +69,32 @@ class MyAccessibilityService : AccessibilityService() { return performGlobalAction(GLOBAL_ACTION_TAKE_SCREENSHOT) } + @RequiresApi(Build.VERSION_CODES.P) + fun toggleSplitScreen(): Boolean { + return performGlobalAction(GLOBAL_ACTION_TOGGLE_SPLIT_SCREEN) + } + companion object { + fun runAccessibilityMode(context: Context) { + if (instance() == null) { + val state: String = context.getString(R.string.accessibility_settings_enable) + + val builder = MaterialAlertDialogBuilder(context) + + builder.setTitle(R.string.accessibility_settings_title) + builder.setMessage(R.string.accessibility_service_desc) + builder.setPositiveButton(state) { _, _ -> + val intent = Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS) + context.startActivity(intent) + } + builder.setNegativeButton(android.R.string.cancel) { dialog, _ -> + dialog.dismiss() + } + builder.show() + } + return + } + private var mInstance: WeakReference = WeakReference(null) fun instance(): MyAccessibilityService? { return mInstance.get() diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/helper/AppHelper.kt b/app/src/main/java/com/github/droidworksstudio/launcher/helper/AppHelper.kt index 7a5e148..3a6e376 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/helper/AppHelper.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/helper/AppHelper.kt @@ -22,7 +22,6 @@ import android.view.WindowInsets import android.view.inputmethod.InputMethodManager import android.widget.TextView import android.widget.Toast -import androidx.appcompat.app.AppCompatDelegate import androidx.appcompat.widget.LinearLayoutCompat import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.github.droidworksstudio.launcher.Constants @@ -67,6 +66,7 @@ class AppHelper @Inject constructor() { method.invoke(statusBarService) } catch (exception: Exception) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + MyAccessibilityService.runAccessibilityMode(context) MyAccessibilityService.instance()?.openNotifications() } exception.printStackTrace() @@ -82,6 +82,7 @@ class AppHelper @Inject constructor() { method.invoke(statusBarService) } catch (exception: Exception) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + MyAccessibilityService.runAccessibilityMode(context) MyAccessibilityService.instance()?.openQuickSettings() } exception.printStackTrace() @@ -299,27 +300,31 @@ class AppHelper @Inject constructor() { } fun enableAppAsAccessibilityService(context: Context, accessibilityState: Boolean) { - - val myAccessibilityService = MyAccessibilityService.instance() - - val state: String = if (myAccessibilityService != null) { + val state: String = if (accessibilityState) { context.getString(R.string.accessibility_settings_disable) } else { context.getString(R.string.accessibility_settings_enable) } - val builder = MaterialAlertDialogBuilder(context) + when (state) { + "Enable" -> { + val builder = MaterialAlertDialogBuilder(context) - builder.setTitle(R.string.accessibility_settings_title) - builder.setMessage(R.string.accessibility_service_desc) - builder.setPositiveButton(state) { _, _ -> - val intent = Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS) - context.startActivity(intent) + builder.setTitle(R.string.accessibility_settings_title) + builder.setMessage(R.string.accessibility_service_desc) + builder.setPositiveButton(state) { _, _ -> + val intent = Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS) + context.startActivity(intent) + } + builder.setNegativeButton(android.R.string.cancel) { dialog, _ -> + dialog.dismiss() + } + builder.show() + } + else -> { + return + } } - builder.setNegativeButton(android.R.string.cancel) { dialog, _ -> - dialog.dismiss() - } - builder.show() } } \ No newline at end of file diff --git a/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt b/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt index ec7c7f2..9950fc2 100644 --- a/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/github/droidworksstudio/launcher/ui/home/HomeFragment.kt @@ -233,6 +233,7 @@ class HomeFragment : Fragment(), OnItemClickedListener.OnAppsClickedListener, override fun onDoubleClick() { super.onDoubleClick() if(preferenceHelper.tapLockScreen) { + MyAccessibilityService.runAccessibilityMode(context) MyAccessibilityService.instance()?.lockScreen() } else { return