diff options
author | Adam Powell <adamp@google.com> | 2015-09-18 16:33:57 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-09-18 16:33:57 +0000 |
commit | 5f22c0b27ac4bdd51c2726d8ebe1f094b605528a (patch) | |
tree | 8c51c601049491380ccd7be793a6fd4a29fa5289 /core/java/com | |
parent | 04feedd439989363b629a7d596637d55cf92bbc9 (diff) | |
parent | 1b67a6b84d133e1fdac352d0821034ceca739a71 (diff) | |
download | frameworks_base-5f22c0b27ac4bdd51c2726d8ebe1f094b605528a.zip frameworks_base-5f22c0b27ac4bdd51c2726d8ebe1f094b605528a.tar.gz frameworks_base-5f22c0b27ac4bdd51c2726d8ebe1f094b605528a.tar.bz2 |
am 1b67a6b8: Merge "Badge ChooserActivity choices with their app icon for disambig" into mnc-dr-dev
* commit '1b67a6b84d133e1fdac352d0821034ceca739a71':
Badge ChooserActivity choices with their app icon for disambig
Diffstat (limited to 'core/java/com')
-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; } |