Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8f791bc5 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix PreferredActivity.configure()."

parents da8e1a5c 1d622062
Loading
Loading
Loading
Loading
+15 −9
Original line number Diff line number Diff line
@@ -69,21 +69,27 @@ public class PreferredActivity {
     */
    public void configure(@NonNull String packageName, @NonNull Context context) {
        PackageManager packageManager = context.getPackageManager();
        IntentFilterData intentFilterData = mActivity.getIntentFilterData();
        IntentFilter intentFilter = intentFilterData.createIntentFilter();
        // 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);
        ComponentName packageActivity = mActivity.getQualifyingComponentForPackage(
                packageName, context);
        // TODO: STOPSHIP: Race condition, what if packageActivity became null? Just don't crash?
        if (packageActivity == null) {
            return;
        }
        packageManager.replacePreferredActivity(intentFilter, match, activities, packageActivity);

        int intentFilterDatasSize = mIntentFilterDatas.size();
        for (int i = 0; i < intentFilterDatasSize; i++) {
            IntentFilterData intentFilterData = mIntentFilterDatas.get(i);

            IntentFilter intentFilter = intentFilterData.createIntentFilter();
            // 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);
        }
    }

    @Override