diff options
author | Adam Powell <adamp@google.com> | 2015-09-18 16:25:30 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-09-18 16:25:30 +0000 |
commit | 1b67a6b84d133e1fdac352d0821034ceca739a71 (patch) | |
tree | a4035b3d09686ee192000a02ee52c022cea956fb | |
parent | 896f738cdddec8cfda82b177e3a60c5a85004229 (diff) | |
parent | 00f4aad704198a8293b9a1d2b931b8708073fe15 (diff) | |
download | frameworks_base-1b67a6b84d133e1fdac352d0821034ceca739a71.zip frameworks_base-1b67a6b84d133e1fdac352d0821034ceca739a71.tar.gz frameworks_base-1b67a6b84d133e1fdac352d0821034ceca739a71.tar.bz2 |
Merge "Badge ChooserActivity choices with their app icon for disambig" into mnc-dr-dev
-rw-r--r-- | core/java/com/android/internal/app/ChooserActivity.java | 8 | ||||
-rw-r--r-- | core/java/com/android/internal/app/ResolverActivity.java | 25 |
2 files changed, 26 insertions, 7 deletions
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index 80f9b0f..3219dcb 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -647,7 +647,8 @@ public class ChooserActivity extends ResolverActivity { @Override public CharSequence getExtendedInfo() { - return mSourceInfo != null ? mSourceInfo.getExtendedInfo() : null; + // ChooserTargets have badge icons, so we won't show the extended info to disambiguate. + return null; } @Override @@ -740,9 +741,8 @@ public class ChooserActivity extends ResolverActivity { @Override public boolean showsExtendedInfo(TargetInfo info) { - // Reserve space to show extended info if any one of the items in the adapter has - // extended info. This keeps grid item sizes uniform. - return hasExtendedInfo(); + // We have badges so we don't need this text shown. + return false; } @Override diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 9272193..ef9d1ce 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -896,6 +896,7 @@ public class ResolverActivity extends Activity { private final ResolveInfo mResolveInfo; private final CharSequence mDisplayLabel; private Drawable mDisplayIcon; + private Drawable mBadge; private final CharSequence mExtendedInfo; private final Intent mResolvedIntent; private final List<Intent> mSourceIntents = new ArrayList<>(); @@ -940,7 +941,25 @@ public class ResolverActivity extends Activity { } public Drawable getBadgeIcon() { - return null; + // We only expose a badge if we have extended info. + // The badge is a higher-priority disambiguation signal + // but we don't need one if we wouldn't show extended info at all. + if (TextUtils.isEmpty(getExtendedInfo())) { + return null; + } + + if (mBadge == null && mResolveInfo != null && mResolveInfo.activityInfo != null + && mResolveInfo.activityInfo.applicationInfo != null) { + if (mResolveInfo.activityInfo.icon == 0 || mResolveInfo.activityInfo.icon + == mResolveInfo.activityInfo.applicationInfo.icon) { + // Badging an icon with exactly the same icon is silly. + // If the activityInfo icon resid is 0 it will fall back + // to the application's icon, making it a match. + return null; + } + mBadge = mResolveInfo.activityInfo.applicationInfo.loadIcon(mPm); + } + return mBadge; } @Override @@ -1378,8 +1397,8 @@ public class ResolverActivity extends Activity { } else { mHasExtendedInfo = true; boolean usePkg = false; - CharSequence startApp = ro.getResolveInfoAt(0).activityInfo.applicationInfo - .loadLabel(mPm); + final ApplicationInfo ai = ro.getResolveInfoAt(0).activityInfo.applicationInfo; + final CharSequence startApp = ai.loadLabel(mPm); if (startApp == null) { usePkg = true; } |