diff --git a/api/current.txt b/api/current.txt index 6685c1ed9eb91..3e6404c2c0bea 100644 --- a/api/current.txt +++ b/api/current.txt @@ -2811,6 +2811,7 @@ package android.accessibilityservice { method public android.content.pm.ResolveInfo getResolveInfo(); method public java.lang.String getSettingsActivityName(); method public java.lang.String loadDescription(android.content.pm.PackageManager); + method public java.lang.String loadSummary(android.content.pm.PackageManager); method public void writeToParcel(android.os.Parcel, int); field public static final int CAPABILITY_CAN_CAPTURE_FINGERPRINT_GESTURES = 64; // 0x40 field public static final int CAPABILITY_CAN_CONTROL_MAGNIFICATION = 16; // 0x10 diff --git a/api/system-current.txt b/api/system-current.txt index 9645e74a9a42f..6247498be39a2 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -2930,6 +2930,7 @@ package android.accessibilityservice { method public android.content.pm.ResolveInfo getResolveInfo(); method public java.lang.String getSettingsActivityName(); method public java.lang.String loadDescription(android.content.pm.PackageManager); + method public java.lang.String loadSummary(android.content.pm.PackageManager); method public void writeToParcel(android.os.Parcel, int); field public static final int CAPABILITY_CAN_CAPTURE_FINGERPRINT_GESTURES = 64; // 0x40 field public static final int CAPABILITY_CAN_CONTROL_MAGNIFICATION = 16; // 0x10 diff --git a/api/test-current.txt b/api/test-current.txt index dd4d5358fcabd..5d04635d46a91 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -2811,6 +2811,7 @@ package android.accessibilityservice { method public android.content.pm.ResolveInfo getResolveInfo(); method public java.lang.String getSettingsActivityName(); method public java.lang.String loadDescription(android.content.pm.PackageManager); + method public java.lang.String loadSummary(android.content.pm.PackageManager); method public void writeToParcel(android.os.Parcel, int); field public static final int CAPABILITY_CAN_CAPTURE_FINGERPRINT_GESTURES = 64; // 0x40 field public static final int CAPABILITY_CAN_CONTROL_MAGNIFICATION = 16; // 0x10 diff --git a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java index 19d1a7d899c97..5937dd951dc43 100644 --- a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java +++ b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java @@ -69,10 +69,10 @@ import static android.content.pm.PackageManager.FEATURE_FINGERPRINT; * @attr ref android.R.styleable#AccessibilityService_canRequestTouchExplorationMode * @attr ref android.R.styleable#AccessibilityService_canRetrieveWindowContent * @attr ref android.R.styleable#AccessibilityService_description + * @attr ref android.R.styleable#AccessibilityService_summary * @attr ref android.R.styleable#AccessibilityService_notificationTimeout * @attr ref android.R.styleable#AccessibilityService_packageNames * @attr ref android.R.styleable#AccessibilityService_settingsActivity - * * @see AccessibilityService * @see android.view.accessibility.AccessibilityEvent * @see android.view.accessibility.AccessibilityManager @@ -430,6 +430,16 @@ public class AccessibilityServiceInfo implements Parcelable { */ private int mCapabilities; + /** + * Resource id of the summary of the accessibility service. + */ + private int mSummaryResId; + + /** + * Non-localized summary of the accessibility service. + */ + private String mNonLocalizedSummary; + /** * Resource id of the description of the accessibility service. */ @@ -544,6 +554,15 @@ public class AccessibilityServiceInfo implements Parcelable { mNonLocalizedDescription = nonLocalizedDescription.toString().trim(); } } + peekedValue = asAttributes.peekValue( + com.android.internal.R.styleable.AccessibilityService_summary); + if (peekedValue != null) { + mSummaryResId = peekedValue.resourceId; + CharSequence nonLocalizedSummary = peekedValue.coerceToString(); + if (nonLocalizedSummary != null) { + mNonLocalizedSummary = nonLocalizedSummary.toString().trim(); + } + } asAttributes.recycle(); } catch (NameNotFoundException e) { throw new XmlPullParserException( "Unable to create context for: " @@ -668,6 +687,27 @@ public class AccessibilityServiceInfo implements Parcelable { mCapabilities = capabilities; } + /** + * The localized summary of the accessibility service. + *
+ * Statically set from + * {@link AccessibilityService#SERVICE_META_DATA meta-data}. + *
+ * @return The localized summary. + */ + public String loadSummary(PackageManager packageManager) { + if (mSummaryResId == 0) { + return mNonLocalizedSummary; + } + ServiceInfo serviceInfo = mResolveInfo.serviceInfo; + CharSequence summary = packageManager.getText(serviceInfo.packageName, + mSummaryResId, serviceInfo.applicationInfo); + if (summary != null) { + return summary.toString().trim(); + } + return null; + } + /** * Gets the non-localized description of the accessibility service. *
@@ -726,6 +766,8 @@ public class AccessibilityServiceInfo implements Parcelable {
parcel.writeParcelable(mResolveInfo, 0);
parcel.writeString(mSettingsActivityName);
parcel.writeInt(mCapabilities);
+ parcel.writeInt(mSummaryResId);
+ parcel.writeString(mNonLocalizedSummary);
parcel.writeInt(mDescriptionResId);
parcel.writeString(mNonLocalizedDescription);
}
@@ -740,6 +782,8 @@ public class AccessibilityServiceInfo implements Parcelable {
mResolveInfo = parcel.readParcelable(null);
mSettingsActivityName = parcel.readString();
mCapabilities = parcel.readInt();
+ mSummaryResId = parcel.readInt();
+ mNonLocalizedSummary = parcel.readString();
mDescriptionResId = parcel.readInt();
mNonLocalizedDescription = parcel.readString();
}
@@ -790,6 +834,8 @@ public class AccessibilityServiceInfo implements Parcelable {
stringBuilder.append(", ");
stringBuilder.append("settingsActivityName: ").append(mSettingsActivityName);
stringBuilder.append(", ");
+ stringBuilder.append("summary: ").append(mNonLocalizedSummary);
+ stringBuilder.append(", ");
appendCapabilities(stringBuilder, mCapabilities);
return stringBuilder.toString();
}
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 2e09e7d1b0c54..55b154a300bb0 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -3336,7 +3336,7 @@
{@link android.accessibilityservice.AccessibilityService#SERVICE_META_DATA}
meta-data entry. -->