diff options
| -rw-r--r-- | core/java/android/accessibilityservice/AccessibilityService.java | 3 | ||||
| -rw-r--r-- | services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java | 23 |
2 files changed, 16 insertions, 10 deletions
diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java index 163e7d2661b9..b311c218de30 100644 --- a/core/java/android/accessibilityservice/AccessibilityService.java +++ b/core/java/android/accessibilityservice/AccessibilityService.java @@ -334,7 +334,8 @@ public abstract class AccessibilityService extends Service { public static final int GLOBAL_ACTION_HOME = 2; /** - * Action to toggle showing the overview of recent apps + * Action to toggle showing the overview of recent apps. Will fail on platforms that don't + * show recent apps. */ public static final int GLOBAL_ACTION_RECENTS = 3; diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java index e00178f8ea41..58bb5f379312 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java @@ -2891,8 +2891,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { sendDownAndUpKeyEvents(KeyEvent.KEYCODE_HOME); } return true; case AccessibilityService.GLOBAL_ACTION_RECENTS: { - openRecents(); - } return true; + return openRecents(); + } case AccessibilityService.GLOBAL_ACTION_NOTIFICATIONS: { expandNotifications(); } return true; @@ -3385,14 +3385,19 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { Binder.restoreCallingIdentity(token); } - private void openRecents() { + private boolean openRecents() { final long token = Binder.clearCallingIdentity(); - - StatusBarManagerInternal statusBarService = LocalServices.getService( - StatusBarManagerInternal.class); - statusBarService.toggleRecentApps(); - - Binder.restoreCallingIdentity(token); + try { + StatusBarManagerInternal statusBarService = LocalServices.getService( + StatusBarManagerInternal.class); + if (statusBarService == null) { + return false; + } + statusBarService.toggleRecentApps(); + } finally { + Binder.restoreCallingIdentity(token); + } + return true; } private void showGlobalActions() { |