Merge "Badge ChooserActivity choices with their app icon for disambig" into mnc-dr-dev

This commit is contained in:
Adam Powell
2015-09-18 16:25:30 +00:00
committed by Android (Google) Code Review
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;
}