Merge "Removes existing one when apply a default preferred app"
This commit is contained in:
@@ -19867,7 +19867,7 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
final PreferredIntentResolver pir = mSettings.editPreferredActivitiesLPw(userId);
|
final PreferredIntentResolver pir = mSettings.editPreferredActivitiesLPw(userId);
|
||||||
final ArrayList<PreferredActivity> existing = pir.findFilters(filter);
|
final ArrayList<PreferredActivity> existing = pir.findFilters(filter);
|
||||||
if (removeExisting && existing != null) {
|
if (removeExisting && existing != null) {
|
||||||
removeFiltersLocked(pir, filter, existing);
|
mSettings.removeFiltersLPw(pir, filter, existing);
|
||||||
}
|
}
|
||||||
pir.addFilter(new PreferredActivity(filter, match, set, activity, always));
|
pir.addFilter(new PreferredActivity(filter, match, set, activity, always));
|
||||||
scheduleWritePackageRestrictionsLocked(userId);
|
scheduleWritePackageRestrictionsLocked(userId);
|
||||||
@@ -19968,7 +19968,7 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (existing != null) {
|
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);
|
"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
|
@Override
|
||||||
public void clearPackagePreferredActivities(String packageName) {
|
public void clearPackagePreferredActivities(String packageName) {
|
||||||
final int callingUid = Binder.getCallingUid();
|
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.RuntimePermissionsPersistence;
|
||||||
import com.android.permission.persistence.RuntimePermissionsState;
|
import com.android.permission.persistence.RuntimePermissionsState;
|
||||||
import com.android.server.LocalServices;
|
import com.android.server.LocalServices;
|
||||||
import com.android.server.pm.Installer.Batch;
|
|
||||||
import com.android.server.pm.Installer.InstallerException;
|
import com.android.server.pm.Installer.InstallerException;
|
||||||
import com.android.server.pm.parsing.PackageInfoUtils;
|
import com.android.server.pm.parsing.PackageInfoUtils;
|
||||||
import com.android.server.pm.parsing.pkg.AndroidPackage;
|
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(
|
private void applyDefaultPreferredActivityLPw(
|
||||||
PackageManagerInternal pmInternal, IntentFilter tmpPa, ComponentName cn, int userId) {
|
PackageManagerInternal pmInternal, IntentFilter tmpPa, ComponentName cn, int userId) {
|
||||||
// The initial preferences only specify the target activity
|
// 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);
|
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);
|
PreferredActivity pa = new PreferredActivity(filter, systemMatch, set, cn, true);
|
||||||
editPreferredActivitiesLPw(userId).addFilter(pa);
|
pir.addFilter(pa);
|
||||||
} else if (haveNonSys == null) {
|
} else if (haveNonSys == null) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("No component ");
|
sb.append("No component ");
|
||||||
|
|||||||
Reference in New Issue
Block a user