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

Commit e93c1a98 authored by Rhed Jao's avatar Rhed Jao Committed by Android (Google) Code Review
Browse files

Merge "Removes existing one when apply a default preferred app"

parents 742b2816 c46f9bda
Loading
Loading
Loading
Loading
+2 −18
Original line number Diff line number Diff line
@@ -19867,7 +19867,7 @@ public class PackageManagerService extends IPackageManager.Stub
            final PreferredIntentResolver pir = mSettings.editPreferredActivitiesLPw(userId);
            final ArrayList<PreferredActivity> existing = pir.findFilters(filter);
            if (removeExisting && existing != null) {
                removeFiltersLocked(pir, filter, existing);
                mSettings.removeFiltersLPw(pir, filter, existing);
            }
            pir.addFilter(new PreferredActivity(filter, match, set, activity, always));
            scheduleWritePackageRestrictionsLocked(userId);
@@ -19968,7 +19968,7 @@ public class PackageManagerService extends IPackageManager.Stub
                    }
                }
                if (existing != null) {
                    removeFiltersLocked(pir, filter, existing);
                    mSettings.removeFiltersLPw(pir, filter, existing);
                }
            }
        }
@@ -19976,22 +19976,6 @@ public class PackageManagerService extends IPackageManager.Stub
                "Replacing preferred", false);
    }
    private void removeFiltersLocked(@NonNull PreferredIntentResolver pir,
            @NonNull IntentFilter filter, @NonNull List<PreferredActivity> existing) {
        if (DEBUG_PREFERRED) {
            Slog.i(TAG, existing.size() + " preferred matches for:");
            filter.dump(new LogPrinter(Log.INFO, TAG), "  ");
        }
        for (int i = existing.size() - 1; i >= 0; --i) {
            final PreferredActivity pa = existing.get(i);
            if (DEBUG_PREFERRED) {
                Slog.i(TAG, "Removing preferred activity " + pa.mPref.mComponent + ":");
                pa.dump(new LogPrinter(Log.INFO, TAG), "  ");
            }
            pir.removeFilter(pa);
        }
    }
    @Override
    public void clearPackagePreferredActivities(String packageName) {
        final int callingUid = Binder.getCallingUid();
+22 −2
Original line number Diff line number Diff line
@@ -102,7 +102,6 @@ import com.android.internal.util.XmlUtils;
import com.android.permission.persistence.RuntimePermissionsPersistence;
import com.android.permission.persistence.RuntimePermissionsState;
import com.android.server.LocalServices;
import com.android.server.pm.Installer.Batch;
import com.android.server.pm.Installer.InstallerException;
import com.android.server.pm.parsing.PackageInfoUtils;
import com.android.server.pm.parsing.pkg.AndroidPackage;
@@ -3192,6 +3191,22 @@ public final class Settings {
        }
    }

    void removeFiltersLPw(@NonNull PreferredIntentResolver pir,
            @NonNull IntentFilter filter, @NonNull List<PreferredActivity> existing) {
        if (PackageManagerService.DEBUG_PREFERRED) {
            Slog.i(TAG, existing.size() + " preferred matches for:");
            filter.dump(new LogPrinter(Log.INFO, TAG), "  ");
        }
        for (int i = existing.size() - 1; i >= 0; --i) {
            final PreferredActivity pa = existing.get(i);
            if (PackageManagerService.DEBUG_PREFERRED) {
                Slog.i(TAG, "Removing preferred activity " + pa.mPref.mComponent + ":");
                pa.dump(new LogPrinter(Log.INFO, TAG), "  ");
            }
            pir.removeFilter(pa);
        }
    }

    private void applyDefaultPreferredActivityLPw(
            PackageManagerInternal pmInternal, IntentFilter tmpPa, ComponentName cn, int userId) {
        // The initial preferences only specify the target activity
@@ -3395,8 +3410,13 @@ public final class Settings {
                    Slog.w(TAG, "Malformed mimetype " + intent.getType() + " for " + cn);
                }
            }
            final PreferredIntentResolver pir = editPreferredActivitiesLPw(userId);
            final List<PreferredActivity> existing = pir.findFilters(filter);
            if (existing != null) {
                removeFiltersLPw(pir, filter, existing);
            }
            PreferredActivity pa = new PreferredActivity(filter, systemMatch, set, cn, true);
            editPreferredActivitiesLPw(userId).addFilter(pa);
            pir.addFilter(pa);
        } else if (haveNonSys == null) {
            StringBuilder sb = new StringBuilder();
            sb.append("No component ");