Fix: Fixed the Accessibility settings if required.
This commit is contained in:
@@ -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<MyAccessibilityService> = WeakReference(null)
|
||||
fun instance(): MyAccessibilityService? {
|
||||
return mInstance.get()
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user