[automerger skipped] Import translations. DO NOT MERGE am: 42838e2ee7 -s ours
am skip reason: subject contains skip directive
Change-Id: Ibe62d47b694403a4331853b4593d6a3a0497eac8
diff --git a/src/com/android/packageinstaller/role/model/PreferredActivity.java b/src/com/android/packageinstaller/role/model/PreferredActivity.java
index 5062e9e..81c0285 100644
--- a/src/com/android/packageinstaller/role/model/PreferredActivity.java
+++ b/src/com/android/packageinstaller/role/model/PreferredActivity.java
@@ -21,10 +21,11 @@
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
-import android.os.Process;
+import android.content.pm.ResolveInfo;
import androidx.annotation.NonNull;
+import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@@ -69,7 +70,6 @@
* @param context the {@code Context} to retrieve system services
*/
public void configure(@NonNull String packageName, @NonNull Context context) {
- PackageManager packageManager = context.getPackageManager();
ComponentName packageActivity = mActivity.getQualifyingComponentForPackage(
packageName, context);
if (packageActivity == null) {
@@ -78,20 +78,36 @@
return;
}
+ PackageManager packageManager = context.getPackageManager();
int intentFilterDatasSize = mIntentFilterDatas.size();
for (int i = 0; i < intentFilterDatasSize; i++) {
IntentFilterData intentFilterData = mIntentFilterDatas.get(i);
IntentFilter intentFilter = intentFilterData.createIntentFilter();
intentFilter.addCategory(Intent.CATEGORY_DEFAULT);
+
// PackageManager.replacePreferredActivity() expects filter to have no data authorities,
// paths, or types; and at most one scheme.
int match = intentFilterData.getDataScheme() != null
? IntentFilter.MATCH_CATEGORY_SCHEME : IntentFilter.MATCH_CATEGORY_EMPTY;
- List<ComponentName> activities = mActivity.getQualifyingComponentsAsUser(
- Process.myUserHandle(), context);
- packageManager.replacePreferredActivity(intentFilter, match, activities,
- packageActivity);
+
+ Intent intent = intentFilterData.createIntent();
+ List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(intent,
+ PackageManager.MATCH_DIRECT_BOOT_AWARE
+ | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
+ | PackageManager.MATCH_DEFAULT_ONLY);
+ List<ComponentName> set = new ArrayList<>();
+ int resolveInfosSize = resolveInfos.size();
+ for (int resolveInfosIndex = 0; resolveInfosIndex < resolveInfosSize;
+ resolveInfosIndex++) {
+ ResolveInfo resolveInfo = resolveInfos.get(resolveInfosIndex);
+
+ ComponentName componentName = new ComponentName(
+ resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name);
+ set.add(componentName);
+ }
+
+ packageManager.replacePreferredActivity(intentFilter, match, set, packageActivity);
}
}