diff --git a/core/api/current.txt b/core/api/current.txt index 77f869af42d3f..05d76c21719a0 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -866,6 +866,7 @@ package android { field public static final int installLocation = 16843447; // 0x10102b7 field public static final int interactiveUiTimeout = 16844181; // 0x1010595 field public static final int interpolator = 16843073; // 0x1010141 + field public static final int intro; field public static final int isAccessibilityTool = 16844353; // 0x1010641 field public static final int isAlwaysSyncable = 16843571; // 0x1010333 field public static final int isAsciiCapable = 16843753; // 0x10103e9 @@ -3247,6 +3248,7 @@ package android.accessibilityservice { method @Nullable public String getTileServiceClassName(); method public boolean isAccessibilityTool(); method public String loadDescription(android.content.pm.PackageManager); + method @Nullable public CharSequence loadIntro(@NonNull android.content.pm.PackageManager); method public CharSequence loadSummary(android.content.pm.PackageManager); method public void setInteractiveUiTimeoutMillis(@IntRange(from=0) int); method public void setNonInteractiveUiTimeoutMillis(@IntRange(from=0) int); diff --git a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java index 85e78540332fc..8af68d7c57620 100644 --- a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java +++ b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java @@ -568,6 +568,11 @@ public class AccessibilityServiceInfo implements Parcelable { */ private String mNonLocalizedSummary; + /** + * Resource id of the intro of the accessibility service. + */ + private int mIntroResId; + /** * Resource id of the description of the accessibility service. */ @@ -737,6 +742,11 @@ public class AccessibilityServiceInfo implements Parcelable { R.styleable.AccessibilityService_isAccessibilityTool, false); mTileServiceClassName = asAttributes.getString( com.android.internal.R.styleable.AccessibilityService_tileService); + peekedValue = asAttributes.peekValue( + com.android.internal.R.styleable.AccessibilityService_intro); + if (peekedValue != null) { + mIntroResId = peekedValue.resourceId; + } asAttributes.recycle(); } catch (NameNotFoundException e) { throw new XmlPullParserException( "Unable to create context for: " @@ -956,6 +966,29 @@ public class AccessibilityServiceInfo implements Parcelable { return null; } + /** + * The localized intro of the accessibility service. + *
+ * Statically set from + * {@link AccessibilityService#SERVICE_META_DATA meta-data}. + *
+ * @return The localized intro if available, and {@code null} if a intro + * has not been provided. + */ + @Nullable + public CharSequence loadIntro(@NonNull PackageManager packageManager) { + if (mIntroResId == /* invalid */ 0) { + return null; + } + ServiceInfo serviceInfo = mResolveInfo.serviceInfo; + CharSequence intro = packageManager.getText(serviceInfo.packageName, + mIntroResId, serviceInfo.applicationInfo); + if (intro != null) { + return intro.toString().trim(); + } + return null; + } + /** * Gets the non-localized description of the accessibility service. *
@@ -1114,6 +1147,7 @@ public class AccessibilityServiceInfo implements Parcelable {
parcel.writeString(mNonLocalizedDescription);
parcel.writeBoolean(mIsAccessibilityTool);
parcel.writeString(mTileServiceClassName);
+ parcel.writeInt(mIntroResId);
}
private void initFromParcel(Parcel parcel) {
@@ -1137,6 +1171,7 @@ public class AccessibilityServiceInfo implements Parcelable {
mNonLocalizedDescription = parcel.readString();
mIsAccessibilityTool = parcel.readBoolean();
mTileServiceClassName = parcel.readString();
+ mIntroResId = parcel.readInt();
}
@Override
diff --git a/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java b/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java
index 52a1cad7fd880..9a732199ed827 100644
--- a/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java
+++ b/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java
@@ -69,6 +69,11 @@ public final class AccessibilityShortcutInfo {
*/
private final ActivityInfo mActivityInfo;
+ /**
+ * Resource id of the intro of the accessibility shortcut target.
+ */
+ private final int mIntroResId;
+
/**
* Resource id of the summary of the accessibility shortcut target.
*/
@@ -160,6 +165,9 @@ public final class AccessibilityShortcutInfo {
// Get tile service class name
mTileServiceClassName = asAttributes.getString(
com.android.internal.R.styleable.AccessibilityShortcutTarget_tileService);
+ // Gets intro
+ mIntroResId = asAttributes.getResourceId(
+ com.android.internal.R.styleable.AccessibilityShortcutTarget_intro, 0);
asAttributes.recycle();
if ((mDescriptionResId == 0 && mHtmlDescriptionRes == 0) || mSummaryResId == 0) {
@@ -202,6 +210,16 @@ public final class AccessibilityShortcutInfo {
return loadResourceString(packageManager, mActivityInfo, mSummaryResId);
}
+ /**
+ * The localized intro of the accessibility shortcut target.
+ *
+ * @return The localized intro.
+ */
+ @Nullable
+ public String loadIntro(@NonNull PackageManager packageManager) {
+ return loadResourceString(packageManager, mActivityInfo, mIntroResId);
+ }
+
/**
* The localized description of the accessibility shortcut target.
*
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 3a9cb2e52ce75..fca2bd15787d1 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -3989,31 +3989,34 @@