diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index 1ba84c5aae195..d802b46f1fde2 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -502,6 +502,8 @@ interface IPackageManager { boolean hasSystemFeature(String name, int version); + List getInitialNonStoppedSystemPackages(); + void enterSafeMode(); @UnsupportedAppUsage boolean isSafeMode(); diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index b5108af6d2f8f..f48204645d343 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -5257,6 +5257,12 @@ public class PackageManagerService implements PackageSender, TestUtilityService return new ParceledListSlice<>(res); } + @Override + public @NonNull List getInitialNonStoppedSystemPackages() { + return mInitialNonStoppedSystemPackages != null + ? new ArrayList<>(mInitialNonStoppedSystemPackages) : new ArrayList<>(); + } + @Override public String[] getUnsuspendablePackagesForUser(String[] packageNames, int userId) { Objects.requireNonNull(packageNames, "packageNames cannot be null"); diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java index f78b611a70e32..58183f0bc16af 100644 --- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java +++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java @@ -782,6 +782,8 @@ class PackageManagerShellCommand extends ShellCommand { getInFileDescriptor(), getOutFileDescriptor(), getErrFileDescriptor(), new String[] { "list" }, getShellCallback(), adoptResultReceiver()); return 0; + case "initial-non-stopped-system-packages": + return runListInitialNonStoppedSystemPackages(); } pw.println("Error: unknown list type '" + type + "'"); return -1; @@ -794,6 +796,21 @@ class PackageManagerShellCommand extends ShellCommand { return 0; } + private int runListInitialNonStoppedSystemPackages() throws RemoteException { + final PrintWriter pw = getOutPrintWriter(); + final List list = mInterface.getInitialNonStoppedSystemPackages(); + + Collections.sort(list); + + for (String pkgName : list) { + pw.print("package:"); + pw.print(pkgName); + pw.println(); + } + + return 0; + } + private int runListFeatures() throws RemoteException { final PrintWriter pw = getOutPrintWriter(); final List list = mInterface.getSystemAvailableFeatures().getList();