Make ResolverActivity respect selector intent when making filters
When the ResolverActivity makes a filter after an intent is chosen, either for remembering last used or an "always use" choice for the user it doesn't consider the selector in the intent if present. This means that when a resolver activity is launched for an intent with a selector, the selector is used for resolving preferred activities, and for populating the list, but when the same intent is sent again it doesn't match the filter created by the previous ResolverActivity. This in turn means that the user will get another ResolverActivity even if "Always Use" was chosen the last time. Bug: 28129216 Change-Id: I29be7010e7c890caf9789673b3c3f821ba362761
This commit is contained in:
committed by
Adam Powell
parent
2089575686
commit
3277cf1ea4
@@ -668,12 +668,19 @@ public class ResolverActivity extends Activity {
|
||||
&& mAdapter.mOrigResolveList != null) {
|
||||
// Build a reasonable intent filter, based on what matched.
|
||||
IntentFilter filter = new IntentFilter();
|
||||
String action = intent.getAction();
|
||||
Intent filterIntent;
|
||||
|
||||
if (intent.getSelector() != null) {
|
||||
filterIntent = intent.getSelector();
|
||||
} else {
|
||||
filterIntent = intent;
|
||||
}
|
||||
|
||||
String action = filterIntent.getAction();
|
||||
if (action != null) {
|
||||
filter.addAction(action);
|
||||
}
|
||||
Set<String> categories = intent.getCategories();
|
||||
Set<String> categories = filterIntent.getCategories();
|
||||
if (categories != null) {
|
||||
for (String cat : categories) {
|
||||
filter.addCategory(cat);
|
||||
@@ -682,9 +689,9 @@ public class ResolverActivity extends Activity {
|
||||
filter.addCategory(Intent.CATEGORY_DEFAULT);
|
||||
|
||||
int cat = ri.match & IntentFilter.MATCH_CATEGORY_MASK;
|
||||
Uri data = intent.getData();
|
||||
Uri data = filterIntent.getData();
|
||||
if (cat == IntentFilter.MATCH_CATEGORY_TYPE) {
|
||||
String mimeType = intent.resolveType(this);
|
||||
String mimeType = filterIntent.resolveType(this);
|
||||
if (mimeType != null) {
|
||||
try {
|
||||
filter.addDataType(mimeType);
|
||||
|
||||
Reference in New Issue
Block a user