Loading core/java/com/android/internal/app/ChooserActivity.java +17 −4 Original line number Diff line number Diff line Loading @@ -2505,9 +2505,7 @@ public class ChooserActivity extends ResolverActivity { ri.noResourceId = true; ri.icon = 0; } ResolveInfoPresentationGetter getter = makePresentationGetter(ri); mCallerTargets.add(new DisplayResolveInfo(ii, ri, getter.getLabel(), getter.getSubLabel(), ii)); mCallerTargets.add(new DisplayResolveInfo(ii, ri, ii)); } } } Loading Loading @@ -2606,7 +2604,22 @@ public class ChooserActivity extends ResolverActivity { @Override public void onListRebuilt() { if (getDisplayList() == null || getDisplayList().isEmpty()) { notifyDataSetChanged(); } else { new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... voids) { updateAlphabeticalList(); return null; } @Override protected void onPostExecute(Void aVoid) { notifyDataSetChanged(); } }.execute(); } // don't support direct share on low ram devices if (ActivityManager.isLowRamDeviceStatic()) { Loading core/java/com/android/internal/app/ResolverActivity.java +80 −23 Original line number Diff line number Diff line Loading @@ -1406,14 +1406,18 @@ public class ResolverActivity extends Activity { public final class DisplayResolveInfo implements TargetInfo { private final ResolveInfo mResolveInfo; private final CharSequence mDisplayLabel; private CharSequence mDisplayLabel; private Drawable mDisplayIcon; private Drawable mBadge; private final CharSequence mExtendedInfo; private CharSequence mExtendedInfo; private final Intent mResolvedIntent; private final List<Intent> mSourceIntents = new ArrayList<>(); private boolean mIsSuspended; public DisplayResolveInfo(Intent originalIntent, ResolveInfo pri, Intent pOrigIntent) { this(originalIntent, pri, null /*mDisplayLabel*/, null /*mExtendedInfo*/, pOrigIntent); } public DisplayResolveInfo(Intent originalIntent, ResolveInfo pri, CharSequence pLabel, CharSequence pInfo, Intent pOrigIntent) { mSourceIntents.add(originalIntent); Loading Loading @@ -1448,9 +1452,26 @@ public class ResolverActivity extends Activity { } public CharSequence getDisplayLabel() { if (mDisplayLabel == null) { ResolveInfoPresentationGetter pg = makePresentationGetter(mResolveInfo); mDisplayLabel = pg.getLabel(); mExtendedInfo = pg.getSubLabel(); } return mDisplayLabel; } public boolean hasDisplayLabel() { return mDisplayLabel != null; } public void setDisplayLabel(CharSequence displayLabel) { mDisplayLabel = displayLabel; } public void setExtendedInfo(CharSequence extendedInfo) { mExtendedInfo = extendedInfo; } public Drawable getDisplayIcon() { return mDisplayIcon; } Loading Loading @@ -1866,9 +1887,7 @@ public class ResolverActivity extends Activity { final ResolveInfo ri = rci.getResolveInfoAt(0); if (ri != null) { mAllTargetsAreBrowsers &= ri.handleAllWebDataURI; ResolveInfoPresentationGetter pg = makePresentationGetter(ri); addResolveInfoWithAlternates(rci, pg.getSubLabel(), pg.getLabel()); addResolveInfoWithAlternates(rci); } } } Loading Loading @@ -1915,14 +1934,12 @@ public class ResolverActivity extends Activity { return mFilterLastUsed; } private void addResolveInfoWithAlternates(ResolvedComponentInfo rci, CharSequence extraInfo, CharSequence roLabel) { private void addResolveInfoWithAlternates(ResolvedComponentInfo rci) { final int count = rci.getCount(); final Intent intent = rci.getIntentAt(0); final ResolveInfo add = rci.getResolveInfoAt(0); final Intent replaceIntent = getReplacementIntent(add.activityInfo, intent); final DisplayResolveInfo dri = new DisplayResolveInfo(intent, add, roLabel, extraInfo, replaceIntent); final DisplayResolveInfo dri = new DisplayResolveInfo(intent, add, replaceIntent); addResolveInfo(dri); if (replaceIntent == intent) { // Only add alternates if we didn't get a specific replacement from Loading Loading @@ -2054,20 +2071,11 @@ public class ResolverActivity extends Activity { return; } final CharSequence label = info.getDisplayLabel(); if (!TextUtils.equals(holder.text.getText(), label)) { holder.text.setText(info.getDisplayLabel()); } // Always show a subLabel for visual consistency across list items. Show an empty // subLabel if the subLabel is the same as the label CharSequence subLabel = info.getExtendedInfo(); if (TextUtils.equals(label, subLabel)) subLabel = null; if (!TextUtils.equals(holder.text2.getText(), subLabel) && !TextUtils.isEmpty(subLabel)) { holder.text2.setVisibility(View.VISIBLE); holder.text2.setText(subLabel); if (info instanceof DisplayResolveInfo && !((DisplayResolveInfo) info).hasDisplayLabel()) { getLoadLabelTask((DisplayResolveInfo) info, holder).execute(); } else { holder.bindLabel(info.getDisplayLabel(), info.getExtendedInfo()); } if (info.isSuspended()) { Loading @@ -2085,6 +2093,9 @@ public class ResolverActivity extends Activity { } } protected LoadLabelTask getLoadLabelTask(DisplayResolveInfo info, ViewHolder holder) { return new LoadLabelTask(info, holder); } @VisibleForTesting public static final class ResolvedComponentInfo { Loading Loading @@ -2148,6 +2159,24 @@ public class ResolverActivity extends Activity { text2 = (TextView) view.findViewById(com.android.internal.R.id.text2); icon = (ImageView) view.findViewById(R.id.icon); } public void bindLabel(CharSequence label, CharSequence subLabel) { if (!TextUtils.equals(text.getText(), label)) { text.setText(label); } // Always show a subLabel for visual consistency across list items. Show an empty // subLabel if the subLabel is the same as the label if (TextUtils.equals(label, subLabel)) { subLabel = null; } if (!TextUtils.equals(text2.getText(), subLabel) && !TextUtils.isEmpty(subLabel)) { text2.setVisibility(View.VISIBLE); text2.setText(subLabel); } } } class ItemClickListener implements AdapterView.OnItemClickListener, Loading Loading @@ -2200,6 +2229,34 @@ public class ResolverActivity extends Activity { } protected class LoadLabelTask extends AsyncTask<Void, Void, CharSequence[]> { private final DisplayResolveInfo mDisplayResolveInfo; private final ViewHolder mHolder; protected LoadLabelTask(DisplayResolveInfo dri, ViewHolder holder) { mDisplayResolveInfo = dri; mHolder = holder; } @Override protected CharSequence[] doInBackground(Void... voids) { ResolveInfoPresentationGetter pg = makePresentationGetter(mDisplayResolveInfo.mResolveInfo); return new CharSequence[] { pg.getLabel(), pg.getSubLabel() }; } @Override protected void onPostExecute(CharSequence[] result) { mDisplayResolveInfo.setDisplayLabel(result[0]); mDisplayResolveInfo.setExtendedInfo(result[1]); mHolder.bindLabel(result[0], result[1]); } } class LoadIconTask extends AsyncTask<Void, Void, Drawable> { protected final DisplayResolveInfo mDisplayResolveInfo; private final ResolveInfo mResolveInfo; Loading Loading
core/java/com/android/internal/app/ChooserActivity.java +17 −4 Original line number Diff line number Diff line Loading @@ -2505,9 +2505,7 @@ public class ChooserActivity extends ResolverActivity { ri.noResourceId = true; ri.icon = 0; } ResolveInfoPresentationGetter getter = makePresentationGetter(ri); mCallerTargets.add(new DisplayResolveInfo(ii, ri, getter.getLabel(), getter.getSubLabel(), ii)); mCallerTargets.add(new DisplayResolveInfo(ii, ri, ii)); } } } Loading Loading @@ -2606,7 +2604,22 @@ public class ChooserActivity extends ResolverActivity { @Override public void onListRebuilt() { if (getDisplayList() == null || getDisplayList().isEmpty()) { notifyDataSetChanged(); } else { new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... voids) { updateAlphabeticalList(); return null; } @Override protected void onPostExecute(Void aVoid) { notifyDataSetChanged(); } }.execute(); } // don't support direct share on low ram devices if (ActivityManager.isLowRamDeviceStatic()) { Loading
core/java/com/android/internal/app/ResolverActivity.java +80 −23 Original line number Diff line number Diff line Loading @@ -1406,14 +1406,18 @@ public class ResolverActivity extends Activity { public final class DisplayResolveInfo implements TargetInfo { private final ResolveInfo mResolveInfo; private final CharSequence mDisplayLabel; private CharSequence mDisplayLabel; private Drawable mDisplayIcon; private Drawable mBadge; private final CharSequence mExtendedInfo; private CharSequence mExtendedInfo; private final Intent mResolvedIntent; private final List<Intent> mSourceIntents = new ArrayList<>(); private boolean mIsSuspended; public DisplayResolveInfo(Intent originalIntent, ResolveInfo pri, Intent pOrigIntent) { this(originalIntent, pri, null /*mDisplayLabel*/, null /*mExtendedInfo*/, pOrigIntent); } public DisplayResolveInfo(Intent originalIntent, ResolveInfo pri, CharSequence pLabel, CharSequence pInfo, Intent pOrigIntent) { mSourceIntents.add(originalIntent); Loading Loading @@ -1448,9 +1452,26 @@ public class ResolverActivity extends Activity { } public CharSequence getDisplayLabel() { if (mDisplayLabel == null) { ResolveInfoPresentationGetter pg = makePresentationGetter(mResolveInfo); mDisplayLabel = pg.getLabel(); mExtendedInfo = pg.getSubLabel(); } return mDisplayLabel; } public boolean hasDisplayLabel() { return mDisplayLabel != null; } public void setDisplayLabel(CharSequence displayLabel) { mDisplayLabel = displayLabel; } public void setExtendedInfo(CharSequence extendedInfo) { mExtendedInfo = extendedInfo; } public Drawable getDisplayIcon() { return mDisplayIcon; } Loading Loading @@ -1866,9 +1887,7 @@ public class ResolverActivity extends Activity { final ResolveInfo ri = rci.getResolveInfoAt(0); if (ri != null) { mAllTargetsAreBrowsers &= ri.handleAllWebDataURI; ResolveInfoPresentationGetter pg = makePresentationGetter(ri); addResolveInfoWithAlternates(rci, pg.getSubLabel(), pg.getLabel()); addResolveInfoWithAlternates(rci); } } } Loading Loading @@ -1915,14 +1934,12 @@ public class ResolverActivity extends Activity { return mFilterLastUsed; } private void addResolveInfoWithAlternates(ResolvedComponentInfo rci, CharSequence extraInfo, CharSequence roLabel) { private void addResolveInfoWithAlternates(ResolvedComponentInfo rci) { final int count = rci.getCount(); final Intent intent = rci.getIntentAt(0); final ResolveInfo add = rci.getResolveInfoAt(0); final Intent replaceIntent = getReplacementIntent(add.activityInfo, intent); final DisplayResolveInfo dri = new DisplayResolveInfo(intent, add, roLabel, extraInfo, replaceIntent); final DisplayResolveInfo dri = new DisplayResolveInfo(intent, add, replaceIntent); addResolveInfo(dri); if (replaceIntent == intent) { // Only add alternates if we didn't get a specific replacement from Loading Loading @@ -2054,20 +2071,11 @@ public class ResolverActivity extends Activity { return; } final CharSequence label = info.getDisplayLabel(); if (!TextUtils.equals(holder.text.getText(), label)) { holder.text.setText(info.getDisplayLabel()); } // Always show a subLabel for visual consistency across list items. Show an empty // subLabel if the subLabel is the same as the label CharSequence subLabel = info.getExtendedInfo(); if (TextUtils.equals(label, subLabel)) subLabel = null; if (!TextUtils.equals(holder.text2.getText(), subLabel) && !TextUtils.isEmpty(subLabel)) { holder.text2.setVisibility(View.VISIBLE); holder.text2.setText(subLabel); if (info instanceof DisplayResolveInfo && !((DisplayResolveInfo) info).hasDisplayLabel()) { getLoadLabelTask((DisplayResolveInfo) info, holder).execute(); } else { holder.bindLabel(info.getDisplayLabel(), info.getExtendedInfo()); } if (info.isSuspended()) { Loading @@ -2085,6 +2093,9 @@ public class ResolverActivity extends Activity { } } protected LoadLabelTask getLoadLabelTask(DisplayResolveInfo info, ViewHolder holder) { return new LoadLabelTask(info, holder); } @VisibleForTesting public static final class ResolvedComponentInfo { Loading Loading @@ -2148,6 +2159,24 @@ public class ResolverActivity extends Activity { text2 = (TextView) view.findViewById(com.android.internal.R.id.text2); icon = (ImageView) view.findViewById(R.id.icon); } public void bindLabel(CharSequence label, CharSequence subLabel) { if (!TextUtils.equals(text.getText(), label)) { text.setText(label); } // Always show a subLabel for visual consistency across list items. Show an empty // subLabel if the subLabel is the same as the label if (TextUtils.equals(label, subLabel)) { subLabel = null; } if (!TextUtils.equals(text2.getText(), subLabel) && !TextUtils.isEmpty(subLabel)) { text2.setVisibility(View.VISIBLE); text2.setText(subLabel); } } } class ItemClickListener implements AdapterView.OnItemClickListener, Loading Loading @@ -2200,6 +2229,34 @@ public class ResolverActivity extends Activity { } protected class LoadLabelTask extends AsyncTask<Void, Void, CharSequence[]> { private final DisplayResolveInfo mDisplayResolveInfo; private final ViewHolder mHolder; protected LoadLabelTask(DisplayResolveInfo dri, ViewHolder holder) { mDisplayResolveInfo = dri; mHolder = holder; } @Override protected CharSequence[] doInBackground(Void... voids) { ResolveInfoPresentationGetter pg = makePresentationGetter(mDisplayResolveInfo.mResolveInfo); return new CharSequence[] { pg.getLabel(), pg.getSubLabel() }; } @Override protected void onPostExecute(CharSequence[] result) { mDisplayResolveInfo.setDisplayLabel(result[0]); mDisplayResolveInfo.setExtendedInfo(result[1]); mHolder.bindLabel(result[0], result[1]); } } class LoadIconTask extends AsyncTask<Void, Void, Drawable> { protected final DisplayResolveInfo mDisplayResolveInfo; private final ResolveInfo mResolveInfo; Loading