diff options
| -rw-r--r-- | core/api/current.txt | 2 | ||||
| -rw-r--r-- | core/java/android/accessibilityservice/AccessibilityServiceInfo.java | 22 | ||||
| -rw-r--r-- | core/res/res/values/attrs.xml | 9 | ||||
| -rw-r--r-- | core/res/res/values/public.xml | 1 |
4 files changed, 34 insertions, 0 deletions
diff --git a/core/api/current.txt b/core/api/current.txt index 52e9b265246b..2e0282a8d7a4 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -818,6 +818,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 @@ -3102,6 +3103,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 b15fa27485be..856ed507c524 100644 --- a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java +++ b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java @@ -580,6 +580,13 @@ public class AccessibilityServiceInfo implements Parcelable { private int mHtmlDescriptionRes; /** + * Whether the service is for accessibility. + * + * @hide + */ + private boolean mIsAccessibilityTool = false; + + /** * Creates a new instance. */ public AccessibilityServiceInfo() { @@ -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: " @@ -1036,6 +1045,15 @@ public class AccessibilityServiceInfo implements Parcelable { } /** + * 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} */ public int describeContents() { @@ -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 05d29c2685f4..e0a116be371c 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -3853,6 +3853,15 @@ <!-- Attribute whether the accessibility service wants to be able to take screenshot. --> <attr name="canTakeScreenshot" format="boolean" /> + <!-- Attribute indicating whether the accessibility service is used to assist users with + disabilities. This criteria might be defined by the installer. The default is false. + <p> + Note: If this flag is false, system will show a notification after a duration to + inform the user about the privacy implications of the service. + </p> + --> + <attr name="isAccessibilityTool" format="boolean" /> + <!-- Animated image of the accessibility service purpose or behavior, to help users understand how the service can help them.--> <attr name="animatedImageDrawable" format="reference"/> diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index b5d1e0ceec02..293018d881d8 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -3087,6 +3087,7 @@ <public name="dataExtractionRules"/> <public name="passwordsActivity"/> <public name="selectableAsDefault"/> + <public name="isAccessibilityTool"/> </public-group> <public-group type="drawable" first-id="0x010800b5"> |