Loading services/core/java/com/android/server/pm/PackageManagerService.java +54 −14 Original line number Original line Diff line number Diff line Loading @@ -22870,40 +22870,80 @@ public class PackageManagerService extends IPackageManager.Stub return pkg == null ? null : pkg.packageName; return pkg == null ? null : pkg.packageName; } } /** * Only keep package names that refer to {@link PackageParser.Package#isSystem system} * packages. * * @param pkgNames The packages to filter * * @return The filtered packages */ private @NonNull String[] filterOnlySystemPackages(@Nullable String... pkgNames) { if (pkgNames == null) { return ArrayUtils.emptyArray(String.class); } ArrayList<String> systemPackageNames = new ArrayList<>(pkgNames.length); for (String pkgName: pkgNames) { synchronized (mPackages) { if (pkgName == null) { continue; } PackageParser.Package pkg = getPackage(pkgName); if (pkg == null) { Log.w(TAG, "Could not find package " + pkgName); continue; } if (!pkg.isSystem()) { Log.w(TAG, pkgName + " is not system"); continue; } systemPackageNames.add(pkgName); } } return systemPackageNames.toArray(new String[]{}); } @Override @Override public @NonNull String[] getKnownPackageNames(int knownPackage, int userId) { public @NonNull String[] getKnownPackageNames(int knownPackage, int userId) { switch (knownPackage) { switch (knownPackage) { case PackageManagerInternal.PACKAGE_BROWSER: case PackageManagerInternal.PACKAGE_BROWSER: return new String[]{mPermissionManager.getDefaultBrowser(userId)}; return new String[]{mPermissionManager.getDefaultBrowser(userId)}; case PackageManagerInternal.PACKAGE_INSTALLER: case PackageManagerInternal.PACKAGE_INSTALLER: return new String[]{mRequiredInstallerPackage}; return filterOnlySystemPackages(mRequiredInstallerPackage); case PackageManagerInternal.PACKAGE_SETUP_WIZARD: case PackageManagerInternal.PACKAGE_SETUP_WIZARD: return new String[]{mSetupWizardPackage}; return filterOnlySystemPackages(mSetupWizardPackage); case PackageManagerInternal.PACKAGE_SYSTEM: case PackageManagerInternal.PACKAGE_SYSTEM: return new String[]{"android"}; return new String[]{"android"}; case PackageManagerInternal.PACKAGE_VERIFIER: case PackageManagerInternal.PACKAGE_VERIFIER: return new String[]{mRequiredVerifierPackage}; return filterOnlySystemPackages(mRequiredVerifierPackage); case PackageManagerInternal.PACKAGE_SYSTEM_TEXT_CLASSIFIER: case PackageManagerInternal.PACKAGE_SYSTEM_TEXT_CLASSIFIER: return new String[]{mSystemTextClassifierPackage}; return filterOnlySystemPackages(mSystemTextClassifierPackage); case PackageManagerInternal.PACKAGE_PERMISSION_CONTROLLER: case PackageManagerInternal.PACKAGE_PERMISSION_CONTROLLER: return new String[]{mRequiredPermissionControllerPackage}; return filterOnlySystemPackages(mRequiredPermissionControllerPackage); case PackageManagerInternal.PACKAGE_WELLBEING: case PackageManagerInternal.PACKAGE_WELLBEING: return new String[]{mWellbeingPackage}; return filterOnlySystemPackages(mWellbeingPackage); case PackageManagerInternal.PACKAGE_DOCUMENTER: case PackageManagerInternal.PACKAGE_DOCUMENTER: return new String[]{mDocumenterPackage}; return filterOnlySystemPackages(mDocumenterPackage); case PackageManagerInternal.PACKAGE_CONFIGURATOR: case PackageManagerInternal.PACKAGE_CONFIGURATOR: return new String[]{mConfiguratorPackage}; return filterOnlySystemPackages(mConfiguratorPackage); case PackageManagerInternal.PACKAGE_INCIDENT_REPORT_APPROVER: case PackageManagerInternal.PACKAGE_INCIDENT_REPORT_APPROVER: return new String[]{mIncidentReportApproverPackage}; return filterOnlySystemPackages(mIncidentReportApproverPackage); case PackageManagerInternal.PACKAGE_APP_PREDICTOR: case PackageManagerInternal.PACKAGE_APP_PREDICTOR: return new String[]{mAppPredictionServicePackage}; return filterOnlySystemPackages(mAppPredictionServicePackage); case PackageManagerInternal.PACKAGE_TELEPHONY: case PackageManagerInternal.PACKAGE_TELEPHONY: return mTelephonyPackages; return filterOnlySystemPackages(mTelephonyPackages); case PackageManagerInternal.PACKAGE_WIFI: case PackageManagerInternal.PACKAGE_WIFI: return new String[]{mWifiPackage}; return filterOnlySystemPackages(mWifiPackage); } default: return ArrayUtils.emptyArray(String.class); return ArrayUtils.emptyArray(String.class); } } } @Override @Override public boolean isResolveActivityComponent(ComponentInfo component) { public boolean isResolveActivityComponent(ComponentInfo component) { Loading
services/core/java/com/android/server/pm/PackageManagerService.java +54 −14 Original line number Original line Diff line number Diff line Loading @@ -22870,40 +22870,80 @@ public class PackageManagerService extends IPackageManager.Stub return pkg == null ? null : pkg.packageName; return pkg == null ? null : pkg.packageName; } } /** * Only keep package names that refer to {@link PackageParser.Package#isSystem system} * packages. * * @param pkgNames The packages to filter * * @return The filtered packages */ private @NonNull String[] filterOnlySystemPackages(@Nullable String... pkgNames) { if (pkgNames == null) { return ArrayUtils.emptyArray(String.class); } ArrayList<String> systemPackageNames = new ArrayList<>(pkgNames.length); for (String pkgName: pkgNames) { synchronized (mPackages) { if (pkgName == null) { continue; } PackageParser.Package pkg = getPackage(pkgName); if (pkg == null) { Log.w(TAG, "Could not find package " + pkgName); continue; } if (!pkg.isSystem()) { Log.w(TAG, pkgName + " is not system"); continue; } systemPackageNames.add(pkgName); } } return systemPackageNames.toArray(new String[]{}); } @Override @Override public @NonNull String[] getKnownPackageNames(int knownPackage, int userId) { public @NonNull String[] getKnownPackageNames(int knownPackage, int userId) { switch (knownPackage) { switch (knownPackage) { case PackageManagerInternal.PACKAGE_BROWSER: case PackageManagerInternal.PACKAGE_BROWSER: return new String[]{mPermissionManager.getDefaultBrowser(userId)}; return new String[]{mPermissionManager.getDefaultBrowser(userId)}; case PackageManagerInternal.PACKAGE_INSTALLER: case PackageManagerInternal.PACKAGE_INSTALLER: return new String[]{mRequiredInstallerPackage}; return filterOnlySystemPackages(mRequiredInstallerPackage); case PackageManagerInternal.PACKAGE_SETUP_WIZARD: case PackageManagerInternal.PACKAGE_SETUP_WIZARD: return new String[]{mSetupWizardPackage}; return filterOnlySystemPackages(mSetupWizardPackage); case PackageManagerInternal.PACKAGE_SYSTEM: case PackageManagerInternal.PACKAGE_SYSTEM: return new String[]{"android"}; return new String[]{"android"}; case PackageManagerInternal.PACKAGE_VERIFIER: case PackageManagerInternal.PACKAGE_VERIFIER: return new String[]{mRequiredVerifierPackage}; return filterOnlySystemPackages(mRequiredVerifierPackage); case PackageManagerInternal.PACKAGE_SYSTEM_TEXT_CLASSIFIER: case PackageManagerInternal.PACKAGE_SYSTEM_TEXT_CLASSIFIER: return new String[]{mSystemTextClassifierPackage}; return filterOnlySystemPackages(mSystemTextClassifierPackage); case PackageManagerInternal.PACKAGE_PERMISSION_CONTROLLER: case PackageManagerInternal.PACKAGE_PERMISSION_CONTROLLER: return new String[]{mRequiredPermissionControllerPackage}; return filterOnlySystemPackages(mRequiredPermissionControllerPackage); case PackageManagerInternal.PACKAGE_WELLBEING: case PackageManagerInternal.PACKAGE_WELLBEING: return new String[]{mWellbeingPackage}; return filterOnlySystemPackages(mWellbeingPackage); case PackageManagerInternal.PACKAGE_DOCUMENTER: case PackageManagerInternal.PACKAGE_DOCUMENTER: return new String[]{mDocumenterPackage}; return filterOnlySystemPackages(mDocumenterPackage); case PackageManagerInternal.PACKAGE_CONFIGURATOR: case PackageManagerInternal.PACKAGE_CONFIGURATOR: return new String[]{mConfiguratorPackage}; return filterOnlySystemPackages(mConfiguratorPackage); case PackageManagerInternal.PACKAGE_INCIDENT_REPORT_APPROVER: case PackageManagerInternal.PACKAGE_INCIDENT_REPORT_APPROVER: return new String[]{mIncidentReportApproverPackage}; return filterOnlySystemPackages(mIncidentReportApproverPackage); case PackageManagerInternal.PACKAGE_APP_PREDICTOR: case PackageManagerInternal.PACKAGE_APP_PREDICTOR: return new String[]{mAppPredictionServicePackage}; return filterOnlySystemPackages(mAppPredictionServicePackage); case PackageManagerInternal.PACKAGE_TELEPHONY: case PackageManagerInternal.PACKAGE_TELEPHONY: return mTelephonyPackages; return filterOnlySystemPackages(mTelephonyPackages); case PackageManagerInternal.PACKAGE_WIFI: case PackageManagerInternal.PACKAGE_WIFI: return new String[]{mWifiPackage}; return filterOnlySystemPackages(mWifiPackage); } default: return ArrayUtils.emptyArray(String.class); return ArrayUtils.emptyArray(String.class); } } } @Override @Override public boolean isResolveActivityComponent(ComponentInfo component) { public boolean isResolveActivityComponent(ComponentInfo component) {