Merge "Revise the modifier and naming of public APIs for allow rich content."
diff --git a/api/current.txt b/api/current.txt
index 4120d67..0f1d6f0 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -2983,7 +2983,6 @@
method public int describeContents();
method public static String feedbackTypeToString(int);
method public static String flagToString(int);
- method public int getAnimatedImageRes();
method @Deprecated public boolean getCanRetrieveWindowContent();
method public int getCapabilities();
method @Deprecated public String getDescription();
@@ -2992,6 +2991,7 @@
method public int getNonInteractiveUiTimeoutMillis();
method public android.content.pm.ResolveInfo getResolveInfo();
method public String getSettingsActivityName();
+ method @Nullable public android.graphics.drawable.Drawable loadAnimatedImage(@NonNull android.content.pm.PackageManager);
method public String loadDescription(android.content.pm.PackageManager);
method @Nullable public String loadHtmlDescription(@NonNull android.content.pm.PackageManager);
method public CharSequence loadSummary(android.content.pm.PackageManager);
diff --git a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
index c1e2195..c373284 100644
--- a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
+++ b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
@@ -27,6 +27,7 @@
import android.compat.annotation.UnsupportedAppUsage;
import android.content.ComponentName;
import android.content.Context;
+import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
@@ -34,6 +35,7 @@
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
+import android.graphics.drawable.Drawable;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Build;
import android.os.Parcel;
@@ -786,12 +788,33 @@
* {@link AccessibilityService#SERVICE_META_DATA meta-data}.</strong>
* </p>
* @return The animated image resource id.
+ * @hide
*/
public int getAnimatedImageRes() {
return mAnimatedImageRes;
}
/**
+ * The animated image drawable.
+ * <p>
+ * <strong>Statically set from
+ * {@link AccessibilityService#SERVICE_META_DATA meta-data}.</strong>
+ * </p>
+ * @return The animated image drawable.
+ */
+ @Nullable
+ public Drawable loadAnimatedImage(@NonNull PackageManager packageManager) {
+ if (mAnimatedImageRes == /* invalid */ 0) {
+ return null;
+ }
+
+ final String packageName = mComponentName.getPackageName();
+ final ApplicationInfo applicationInfo = mResolveInfo.serviceInfo.applicationInfo;
+
+ return packageManager.getDrawable(packageName, mAnimatedImageRes, applicationInfo);
+ }
+
+ /**
* Whether this service can retrieve the current window's content.
* <p>
* <strong>Statically set from
diff --git a/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java b/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java
index 9912d2b..d537ce1 100644
--- a/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java
+++ b/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java
@@ -22,10 +22,12 @@
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
+import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.Xml;
@@ -193,12 +195,31 @@
* The animated image resource id of the accessibility shortcut target.
*
* @return The animated image resource id.
+ *
+ * @hide
*/
public int getAnimatedImageRes() {
return mAnimatedImageRes;
}
/**
+ * The animated image drawable of the accessibility shortcut target.
+ *
+ * @return The animated image drawable.
+ */
+ @Nullable
+ public Drawable loadAnimatedImage(@NonNull PackageManager packageManager) {
+ if (mAnimatedImageRes == /* invalid */ 0) {
+ return null;
+ }
+
+ final String packageName = mComponentName.getPackageName();
+ final ApplicationInfo applicationInfo = mActivityInfo.applicationInfo;
+
+ return packageManager.getDrawable(packageName, mAnimatedImageRes, applicationInfo);
+ }
+
+ /**
* The localized html description of the accessibility shortcut target.
*
* @return The localized html description.
diff --git a/core/tests/coretests/src/android/accessibilityservice/AccessibilityShortcutInfoTest.java b/core/tests/coretests/src/android/accessibilityservice/AccessibilityShortcutInfoTest.java
index 82a7b2c..9f0af60 100644
--- a/core/tests/coretests/src/android/accessibilityservice/AccessibilityShortcutInfoTest.java
+++ b/core/tests/coretests/src/android/accessibilityservice/AccessibilityShortcutInfoTest.java
@@ -90,6 +90,12 @@
}
@Test
+ public void testLoadAnimatedImage() {
+ assertNotNull("Can't find animated image",
+ mShortcutInfo.loadAnimatedImage(mPackageManager));
+ }
+
+ @Test
public void testHtmlDescription() {
final String htmlDescription = mTargetContext.getResources()
.getString(R.string.accessibility_shortcut_html_description);