am 377d80ba: Merge "Put native apps above browser in resolver activity." into lmp-mr1-dev

* commit '377d80ba53d4eda31d131f4f2bd899668cad426b':
  Put native apps above browser in resolver activity.
This commit is contained in:
Dianne Hackborn
2014-11-13 00:07:25 +00:00
committed by Android Git Automerger

View File

@@ -840,7 +840,7 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
}
if (N > 1) {
Comparator<ResolveInfo> rComparator =
new ResolverComparator(ResolverActivity.this);
new ResolverComparator(ResolverActivity.this, mIntent);
Collections.sort(currentResolveList, rComparator);
}
// First put the initial items at the top.
@@ -1093,11 +1093,20 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
}
}
static final boolean isSpecificUriMatch(int match) {
match = match&IntentFilter.MATCH_CATEGORY_MASK;
return match >= IntentFilter.MATCH_CATEGORY_HOST
&& match <= IntentFilter.MATCH_CATEGORY_PATH;
}
class ResolverComparator implements Comparator<ResolveInfo> {
private final Collator mCollator;
private final boolean mHttp;
public ResolverComparator(Context context) {
public ResolverComparator(Context context, Intent intent) {
mCollator = Collator.getInstance(context.getResources().getConfiguration().locale);
String scheme = intent.getScheme();
mHttp = "http".equals(scheme) || "https".equals(scheme);
}
@Override
@@ -1107,6 +1116,17 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
return 1;
}
if (mHttp) {
// Special case: we want filters that match URI paths/schemes to be
// ordered before others. This is for the case when opening URIs,
// to make native apps go above browsers.
final boolean lhsSpecific = isSpecificUriMatch(lhs.match);
final boolean rhsSpecific = isSpecificUriMatch(rhs.match);
if (lhsSpecific != rhsSpecific) {
return lhsSpecific ? -1 : 1;
}
}
if (mStats != null) {
final long timeDiff =
getPackageTimeSpent(rhs.activityInfo.packageName) -