diff --git a/core/api/current.txt b/core/api/current.txt index 6e7d0f4d08f49..3c0a5941b2af4 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -817,6 +817,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 isAccessibilityTool = 16844353; // 0x1010641 field public static final int isAlwaysSyncable = 16843571; // 0x1010333 field public static final int isAsciiCapable = 16843753; // 0x10103e9 field public static final int isAuxiliary = 16843647; // 0x101037f @@ -3101,6 +3102,7 @@ package android.accessibilityservice { method public int getNonInteractiveUiTimeoutMillis(); method public android.content.pm.ResolveInfo getResolveInfo(); method public String getSettingsActivityName(); + method public boolean isAccessibilityTool(); method public String loadDescription(android.content.pm.PackageManager); method public CharSequence loadSummary(android.content.pm.PackageManager); method public void setInteractiveUiTimeoutMillis(@IntRange(from=0) int); diff --git a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java index b15fa27485bef..856ed507c5242 100644 --- a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java +++ b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java @@ -579,6 +579,13 @@ public class AccessibilityServiceInfo implements Parcelable { */ private int mHtmlDescriptionRes; + /** + * Whether the service is for accessibility. + * + * @hide + */ + private boolean mIsAccessibilityTool = false; + /** * Creates a new instance. */ @@ -708,6 +715,8 @@ public class AccessibilityServiceInfo implements Parcelable { if (peekedValue != null) { mHtmlDescriptionRes = peekedValue.resourceId; } + mIsAccessibilityTool = asAttributes.getBoolean( + R.styleable.AccessibilityService_isAccessibilityTool, false); asAttributes.recycle(); } catch (NameNotFoundException e) { throw new XmlPullParserException( "Unable to create context for: " @@ -1035,6 +1044,15 @@ public class AccessibilityServiceInfo implements Parcelable { || mResolveInfo.serviceInfo.directBootAware; } + /** + * Indicates if the service is used to assist users with disabilities. + * + * @return {@code true} if the property is set to true. + */ + public boolean isAccessibilityTool() { + return mIsAccessibilityTool; + } + /** * {@inheritDoc} */ @@ -1061,6 +1079,7 @@ public class AccessibilityServiceInfo implements Parcelable { parcel.writeInt(mAnimatedImageRes); parcel.writeInt(mHtmlDescriptionRes); parcel.writeString(mNonLocalizedDescription); + parcel.writeBoolean(mIsAccessibilityTool); } private void initFromParcel(Parcel parcel) { @@ -1082,6 +1101,7 @@ public class AccessibilityServiceInfo implements Parcelable { mAnimatedImageRes = parcel.readInt(); mHtmlDescriptionRes = parcel.readInt(); mNonLocalizedDescription = parcel.readString(); + mIsAccessibilityTool = parcel.readBoolean(); } @Override @@ -1136,6 +1156,8 @@ public class AccessibilityServiceInfo implements Parcelable { stringBuilder.append(", "); stringBuilder.append("summary: ").append(mNonLocalizedSummary); stringBuilder.append(", "); + stringBuilder.append("isAccessibilityTool: ").append(mIsAccessibilityTool); + 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 05d29c2685f49..e0a116be371c3 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -3853,6 +3853,15 @@ + + + diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index b5d1e0ceec024..293018d881d89 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -3087,6 +3087,7 @@ +