Merge "Removes existing one when apply a default preferred app" am: e93c1a9800
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12467887 Change-Id: Ibb9ffd7328932d0474f6ee74274285654a695d96
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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 ");
|
||||
|
||||
Reference in New Issue
Block a user