summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/java/com/android/server/accessibility/AccessibilityManagerService.java17
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);