diff --git a/api/current.txt b/api/current.txt
index f1f011e7948b2..38e12eab0260c 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -2946,6 +2946,7 @@ package android.accessibilityservice {
field public static final int FEEDBACK_SPOKEN = 1; // 0x1
field public static final int FEEDBACK_VISUAL = 8; // 0x8
field public static final int FLAG_ENABLE_ACCESSIBILITY_VOLUME = 128; // 0x80
+ field public static final int FLAG_HANDLE_SHORTCUT = 2048; // 0x800
field public static final int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 2; // 0x2
field public static final int FLAG_REPORT_VIEW_IDS = 16; // 0x10
field public static final int FLAG_REQUEST_ACCESSIBILITY_BUTTON = 256; // 0x100
diff --git a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
index cf24b8e1ffa69..8e1690f7b6222 100644
--- a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
+++ b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
@@ -18,6 +18,7 @@ package android.accessibilityservice;
import static android.content.pm.PackageManager.FEATURE_FINGERPRINT;
+import android.accessibilityservice.AccessibilityButtonController.AccessibilityButtonCallback;
import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.UnsupportedAppUsage;
@@ -322,6 +323,14 @@ public class AccessibilityServiceInfo implements Parcelable {
*/
public static final int FLAG_REQUEST_SHORTCUT_WARNING_DIALOG_SPOKEN_FEEDBACK = 0x00000400;
+ /**
+ * This flag indicates that the accessibility service will handle the shortcut action itself.
+ * A callback {@link AccessibilityButtonCallback#onClicked(AccessibilityButtonController)} is
+ * called when the user presses the accessibility shortcut. Otherwise, the service is enabled
+ * or disabled by the system instead.
+ */
+ public static final int FLAG_HANDLE_SHORTCUT = 0x00000800;
+
/** {@hide} */
public static final int FLAG_FORCE_DIRECT_BOOT_AWARE = 0x00010000;
@@ -423,6 +432,7 @@ public class AccessibilityServiceInfo implements Parcelable {
* @see #FLAG_ENABLE_ACCESSIBILITY_VOLUME
* @see #FLAG_REQUEST_ACCESSIBILITY_BUTTON
* @see #FLAG_REQUEST_SHORTCUT_WARNING_DIALOG_SPOKEN_FEEDBACK
+ * @see #FLAG_HANDLE_SHORTCUT
*/
public int flags;
@@ -1103,6 +1113,8 @@ public class AccessibilityServiceInfo implements Parcelable {
return "FLAG_REQUEST_FINGERPRINT_GESTURES";
case FLAG_REQUEST_SHORTCUT_WARNING_DIALOG_SPOKEN_FEEDBACK:
return "FLAG_REQUEST_SHORTCUT_WARNING_DIALOG_SPOKEN_FEEDBACK";
+ case FLAG_HANDLE_SHORTCUT:
+ return "FLAG_HANDLE_SHORTCUT";
default:
return null;
}
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 14f5d97b64816..acaaeec7b2ee8 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -3701,6 +3701,8 @@
+
+