feat: Remove Accessibility requirement for Notification and Quick Settings gestures (#1784)
* Replace Accessibility Service with reflection for Notification and Quick Settings actions * move reflection logic to GlobalActionsService with fallback
This commit is contained in:
@@ -1,10 +1,15 @@
|
||||
package de.mm20.launcher2.globalactions
|
||||
|
||||
import android.accessibilityservice.AccessibilityService
|
||||
import android.content.Context
|
||||
|
||||
class GlobalActionsService {
|
||||
class GlobalActionsService(private val context: Context) {
|
||||
fun openNotificationDrawer() {
|
||||
LauncherAccessibilityService.getInstance()?.performGlobalAction(AccessibilityService.GLOBAL_ACTION_NOTIFICATIONS)
|
||||
try {
|
||||
expandNotificationPanel()
|
||||
} catch (e: Exception) {
|
||||
LauncherAccessibilityService.getInstance()?.performGlobalAction(AccessibilityService.GLOBAL_ACTION_NOTIFICATIONS)
|
||||
}
|
||||
}
|
||||
|
||||
fun lockScreen() {
|
||||
@@ -12,7 +17,11 @@ class GlobalActionsService {
|
||||
}
|
||||
|
||||
fun openQuickSettings() {
|
||||
LauncherAccessibilityService.getInstance()?.performGlobalAction(AccessibilityService.GLOBAL_ACTION_QUICK_SETTINGS)
|
||||
try {
|
||||
expandQuickSettings()
|
||||
} catch (e: Exception) {
|
||||
LauncherAccessibilityService.getInstance()?.performGlobalAction(AccessibilityService.GLOBAL_ACTION_QUICK_SETTINGS)
|
||||
}
|
||||
}
|
||||
|
||||
fun openPowerDialog() {
|
||||
@@ -22,4 +31,19 @@ class GlobalActionsService {
|
||||
fun openRecents() {
|
||||
LauncherAccessibilityService.getInstance()?.performGlobalAction(AccessibilityService.GLOBAL_ACTION_RECENTS)
|
||||
}
|
||||
|
||||
private fun expandNotificationPanel() {
|
||||
val statusBarService = context.getSystemService("statusbar")
|
||||
val statusBarManager = Class.forName("android.app.StatusBarManager")
|
||||
val method = statusBarManager.getMethod("expandNotificationsPanel")
|
||||
method.invoke(statusBarService)
|
||||
}
|
||||
|
||||
private fun expandQuickSettings() {
|
||||
val statusBarService = context.getSystemService("statusbar")
|
||||
val statusBarManager = Class.forName("android.app.StatusBarManager")
|
||||
val method = statusBarManager.getMethod("expandSettingsPanel")
|
||||
method.invoke(statusBarService)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,7 +1,8 @@
|
||||
package de.mm20.launcher2.globalactions
|
||||
|
||||
import org.koin.android.ext.koin.androidContext
|
||||
import org.koin.dsl.module
|
||||
|
||||
val globalActionsModule = module {
|
||||
single { GlobalActionsService() }
|
||||
single { GlobalActionsService(androidContext()) }
|
||||
}
|
||||
Reference in New Issue
Block a user