diff options
| -rw-r--r-- | services/java/com/android/server/accessibility/AccessibilityManagerService.java | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/services/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/java/com/android/server/accessibility/AccessibilityManagerService.java index 3e8f51279430..41f4e008bd57 100644 --- a/services/java/com/android/server/accessibility/AccessibilityManagerService.java +++ b/services/java/com/android/server/accessibility/AccessibilityManagerService.java @@ -73,6 +73,7 @@ import android.view.accessibility.IAccessibilityManagerClient; import com.android.internal.R; import com.android.internal.content.PackageMonitor; +import com.android.internal.statusbar.IStatusBarService; import com.android.server.wm.WindowManagerService; import org.xmlpull.v1.XmlPullParserException; @@ -1535,7 +1536,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { sendDownAndUpKeyEvents(KeyEvent.KEYCODE_HOME); } return true; case AccessibilityService.GLOBAL_ACTION_RECENTS: { - sendDownAndUpKeyEvents(KeyEvent.KEYCODE_APP_SWITCH); + openRecents(); } return true; case AccessibilityService.GLOBAL_ACTION_NOTIFICATIONS: { expandStatusBar(); @@ -1728,6 +1729,20 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { Binder.restoreCallingIdentity(token); } + private void openRecents() { + final long token = Binder.clearCallingIdentity(); + + IStatusBarService statusBarService = IStatusBarService.Stub.asInterface( + ServiceManager.getService("statusbar")); + try { + statusBarService.toggleRecentApps(); + } catch (RemoteException e) { + Slog.e(LOG_TAG, "Error toggling recent apps."); + } + + Binder.restoreCallingIdentity(token); + } + private IAccessibilityInteractionConnection getConnectionLocked(int windowId) { if (DEBUG) { Slog.i(LOG_TAG, "Trying to get interaction connection to windowId: " + windowId); |