From 81332eff4add38ca4a8acfe331b2d7d6d2307d8d Mon Sep 17 00:00:00 2001 From: Peter_Liang Date: Wed, 19 Feb 2020 12:42:23 +0800 Subject: Revise the modifier and naming of public APIs for allow rich content. Change "int getAnimatedImageRes()" to "Drawable loadAnimatedImage(PackageManager packageManager)" Bug: 142532186 Test: atest AccessibilityShortcutInfoTest & manual test Change-Id: I2583a5c2427449bca68af29a0a40215dd0cb9085 --- api/current.txt | 2 +- .../AccessibilityServiceInfo.java | 23 ++++++++++++++++++++++ .../AccessibilityShortcutInfo.java | 21 ++++++++++++++++++++ .../AccessibilityShortcutInfoTest.java | 6 ++++++ 4 files changed, 51 insertions(+), 1 deletion(-) diff --git a/api/current.txt b/api/current.txt index 9ea4b2d4d151..7d2767fb4baf 100644 --- a/api/current.txt +++ b/api/current.txt @@ -2979,7 +2979,6 @@ package android.accessibilityservice { 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(); @@ -2988,6 +2987,7 @@ package android.accessibilityservice { 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 c1e21959a667..c37328454c7d 100644 --- a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java +++ b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java @@ -27,6 +27,7 @@ import android.compat.annotation.EnabledAfter; 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.pm.ServiceInfo; 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,11 +788,32 @@ public class AccessibilityServiceInfo implements Parcelable { * {@link AccessibilityService#SERVICE_META_DATA meta-data}. *

* @return The animated image resource id. + * @hide */ public int getAnimatedImageRes() { return mAnimatedImageRes; } + /** + * The animated image drawable. + *

+ * Statically set from + * {@link AccessibilityService#SERVICE_META_DATA meta-data}. + *

+ * @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. *

diff --git a/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java b/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java index 9912d2b1cc8b..d537ce1253dc 100644 --- a/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java +++ b/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java @@ -22,10 +22,12 @@ import android.content.ComponentName; 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,11 +195,30 @@ public final class AccessibilityShortcutInfo { * 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. * diff --git a/core/tests/coretests/src/android/accessibilityservice/AccessibilityShortcutInfoTest.java b/core/tests/coretests/src/android/accessibilityservice/AccessibilityShortcutInfoTest.java index 82a7b2c9217e..9f0af60f33b7 100644 --- a/core/tests/coretests/src/android/accessibilityservice/AccessibilityShortcutInfoTest.java +++ b/core/tests/coretests/src/android/accessibilityservice/AccessibilityShortcutInfoTest.java @@ -89,6 +89,12 @@ public class AccessibilityShortcutInfoTest { mShortcutInfo.getAnimatedImageRes(), is(R.drawable.bitmap_drawable)); } + @Test + public void testLoadAnimatedImage() { + assertNotNull("Can't find animated image", + mShortcutInfo.loadAnimatedImage(mPackageManager)); + } + @Test public void testHtmlDescription() { final String htmlDescription = mTargetContext.getResources() -- cgit v1.2.3-59-g8ed1b