From 27c781d917da6234eb270b075bea5e9f305774ce Mon Sep 17 00:00:00 2001 From: Rhed Jao Date: Wed, 26 Feb 2020 20:28:45 +0800 Subject: [PATCH] Support settings activity for accessibility shortcut target Bug: 150277218 Test: atest AccessibilityShortcutInfoTest Change-Id: I9afc6b2c917b0abe7bb4f5969dd665ba31157c7c --- .../AccessibilityShortcutInfo.java | 19 +++++++++++++++++++ core/java/android/content/Intent.java | 7 +++++-- core/res/res/values/attrs.xml | 3 +++ .../accessibility_shortcut_test_activity.xml | 1 + .../AccessibilityShortcutInfoTest.java | 9 +++++++++ 5 files changed, 37 insertions(+), 2 deletions(-) diff --git a/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java b/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java index d2bdf8051f74b..9a3dad2eb92f2 100644 --- a/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java +++ b/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java @@ -90,6 +90,12 @@ public final class AccessibilityShortcutInfo { */ private final int mHtmlDescriptionRes; + /** + * The accessibility shortcut target setting activity's name, used by the system + * settings to launch the setting activity of this accessibility shortcut target. + */ + private String mSettingsActivityName; + /** * Creates a new instance. * @@ -142,6 +148,9 @@ public final class AccessibilityShortcutInfo { mHtmlDescriptionRes = asAttributes.getResourceId( com.android.internal.R.styleable.AccessibilityShortcutTarget_htmlDescription, 0); + // Get settings activity name + mSettingsActivityName = asAttributes.getString( + com.android.internal.R.styleable.AccessibilityShortcutTarget_settingsActivity); asAttributes.recycle(); if (mDescriptionResId == 0 || mSummaryResId == 0) { @@ -237,6 +246,16 @@ public final class AccessibilityShortcutInfo { return TextUtils.isEmpty(htmlDescription) ? null : getFilteredHtmlText(htmlDescription); } + /** + * The settings activity name. + * + * @return The settings activity name. + */ + @Nullable + public String getSettingsActivityName() { + return mSettingsActivityName; + } + /** * Gets string resource by the given activity and resource id. */ diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index acc4cb098ffba..dc0d48d6ede7f 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -4974,12 +4974,15 @@ public class Intent implements Parcelable, Cloneable { * android:description="@string/shortcut_target_description" * android:summary="@string/shortcut_target_summary" * android:animatedImageDrawable="@drawable/shortcut_target_animated_image" - * android:htmlDescription="@string/shortcut_target_html_description" /> + * android:htmlDescription="@string/shortcut_target_html_description" + * android:settingsActivity="com.example.android.shortcut.target.SettingsActivity" /> * *

* Both description and summary are necessary. The system will ignore the accessibility * shortcut target if they are missing. The animated image and html description are supported - * to help users understand how to use the shortcut target. + * to help users understand how to use the shortcut target. The settings activity is a + * component name that allows the user to modify the settings for this accessibility shortcut + * target. *

*/ @SdkConstant(SdkConstantType.INTENT_CATEGORY) diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 9cdd3edfe832e..cb24c70a7d218 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -3796,6 +3796,9 @@ + +