am 5f22c0b2: am 1b67a6b8: Merge "Badge ChooserActivity choices with their app icon for disambig" into mnc-dr-dev

* commit '5f22c0b27ac4bdd51c2726d8ebe1f094b605528a':
  Badge ChooserActivity choices with their app icon for disambig
This commit is contained in:
Adam Powell
2015-09-18 16:44:36 +00:00
committed by Android Git Automerger
2 changed files with 26 additions and 7 deletions

View File

@@ -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

View File

@@ -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;
}