diff options
| author | 2018-06-07 09:36:29 -0700 | |
|---|---|---|
| committer | 2018-06-07 09:36:29 -0700 | |
| commit | 15014a6f4c50aae0e90ddf7c25cbebfd064a365c (patch) | |
| tree | 4650004f869f72739db5c0ee262e164a5452c812 | |
| parent | f333a4becb4e7c1860b20f929ff7cfaae35af2ea (diff) | |
| parent | bae9b1a71cb271166bf28c52dbd6a2092401f5bc (diff) | |
Merge "Revert "Hide system apps until installed (1/2)"" into pi-dev
am: bae9b1a71c
Change-Id: I75e88cc0905cb90412609f9a14627e6fa7963a27
6 files changed, 20 insertions, 98 deletions
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index 03e600ed3ba1..c988fa907f86 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -598,8 +598,6 @@ interface IPackageManager { boolean setApplicationHiddenSettingAsUser(String packageName, boolean hidden, int userId); boolean getApplicationHiddenSettingAsUser(String packageName, int userId); - boolean setSystemAppInstallState(String packageName, boolean installed, int userId); - IPackageInstaller getPackageInstaller(); boolean setBlockUninstallForUser(String packageName, boolean blockUninstall, int userId); diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index b677b5e2c947..6508a887faed 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -147,7 +147,6 @@ public abstract class PackageManager { GET_DISABLED_COMPONENTS, GET_DISABLED_UNTIL_USED_COMPONENTS, GET_UNINSTALLED_PACKAGES, - MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS, }) @Retention(RetentionPolicy.SOURCE) public @interface PackageInfoFlags {} @@ -165,7 +164,6 @@ public abstract class PackageManager { MATCH_STATIC_SHARED_LIBRARIES, GET_DISABLED_UNTIL_USED_COMPONENTS, GET_UNINSTALLED_PACKAGES, - MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS, }) @Retention(RetentionPolicy.SOURCE) public @interface ApplicationInfoFlags {} @@ -524,12 +522,6 @@ public abstract class PackageManager { public static final int MATCH_DEBUG_TRIAGED_MISSING = 0x10000000; /** - * Internal flag used to indicate that a package is a hidden system app. - * @hide - */ - public static final int MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS = 0x20000000; - - /** * Flag for {@link #addCrossProfileIntentFilter}: if this flag is set: when * resolving an intent that matches the {@code CrossProfileIntentFilter}, * the current profile will be skipped. Only activities in the target user @@ -4851,8 +4843,7 @@ public abstract class PackageManager { * on the system for other users, also install it for the specified user. * @hide */ - @RequiresPermission(anyOf = { - Manifest.permission.INSTALL_EXISTING_PACKAGES, + @RequiresPermission(anyOf = { Manifest.permission.INSTALL_PACKAGES, Manifest.permission.INTERACT_ACROSS_USERS_FULL}) public abstract int installExistingPackageAsUser(String packageName, @UserIdInt int userId) diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index b8eb074d1636..2da2cb4c9285 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -639,19 +639,11 @@ public class PackageParser { */ private static boolean checkUseInstalledOrHidden(int flags, PackageUserState state, ApplicationInfo appInfo) { - // Returns false if the package is hidden system app until installed. - if ((flags & PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS) == 0 - && !state.installed - && appInfo != null && appInfo.isSystemApp()) { - return false; - } - // If available for the target user, or trying to match uninstalled packages and it's // a system app. return state.isAvailable(flags) || (appInfo != null && appInfo.isSystemApp() - && ((flags & PackageManager.MATCH_KNOWN_PACKAGES) != 0 - || (flags & PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS) != 0)); + && (flags & PackageManager.MATCH_KNOWN_PACKAGES) != 0); } public static boolean isAvailable(PackageUserState state) { diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index dced0ad35c5f..66c497e99776 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -3024,15 +3024,6 @@ <permission android:name="android.permission.INSTALL_PACKAGE_UPDATES" android:protectionLevel="signature|privileged" /> - <!-- Allows an application to install existing system packages. This is a limited - version of {@link android.Manifest.permission#INSTALL_PACKAGES}. - <p>Not for use by third-party applications. - TODO(b/80204953): remove this permission once we have a long-term solution. - @hide - --> - <permission android:name="com.android.permission.INSTALL_EXISTING_PACKAGES" - android:protectionLevel="signature|privileged" /> - <!-- @SystemApi Allows an application to clear user data. <p>Not for use by third-party applications @hide diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 1010ce1f73fa..1b8c2cc8793e 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -13967,43 +13967,6 @@ public class PackageManagerService extends IPackageManager.Stub return false; } - @Override - public boolean setSystemAppInstallState(String packageName, boolean installed, int userId) { - enforceSystemOrPhoneCaller("setSystemAppInstallState"); - PackageSetting pkgSetting = mSettings.mPackages.get(packageName); - // The target app should always be in system - if (pkgSetting == null || !pkgSetting.isSystem()) { - return false; - } - // Check if the install state is the same - if (pkgSetting.getInstalled(userId) == installed) { - return false; - } - - long callingId = Binder.clearCallingIdentity(); - try { - if (installed) { - // install the app from uninstalled state - installExistingPackageAsUser( - packageName, - userId, - 0 /*installFlags*/, - PackageManager.INSTALL_REASON_DEVICE_SETUP); - return true; - } - - // uninstall the app from installed state - deletePackageVersioned( - new VersionedPackage(packageName, PackageManager.VERSION_CODE_HIGHEST), - new LegacyPackageDeleteObserver(null).getBinder(), - userId, - PackageManager.DELETE_SYSTEM_APP); - return true; - } finally { - Binder.restoreCallingIdentity(callingId); - } - } - private void sendApplicationHiddenForUser(String packageName, PackageSetting pkgSetting, int userId) { final PackageRemovedInfo info = new PackageRemovedInfo(this); @@ -14068,16 +14031,10 @@ public class PackageManagerService extends IPackageManager.Stub @Override public int installExistingPackageAsUser(String packageName, int userId, int installFlags, int installReason) { - final int callingUid = Binder.getCallingUid(); - if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.INSTALL_PACKAGES) - != PackageManager.PERMISSION_GRANTED - && mContext.checkCallingOrSelfPermission( - android.Manifest.permission.INSTALL_EXISTING_PACKAGES) - != PackageManager.PERMISSION_GRANTED) { - throw new SecurityException("Neither user " + callingUid + " nor current process has " - + android.Manifest.permission.INSTALL_PACKAGES + "."); - } + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.INSTALL_PACKAGES, + null); PackageSetting pkgSetting; + final int callingUid = Binder.getCallingUid(); mPermissionManager.enforceCrossUserPermission(callingUid, userId, true /* requireFullPermission */, true /* checkShell */, "installExistingPackage for user " + userId); diff --git a/telephony/java/com/android/internal/telephony/CarrierAppUtils.java b/telephony/java/com/android/internal/telephony/CarrierAppUtils.java index 676684cdfbbd..bcad554b579f 100644 --- a/telephony/java/com/android/internal/telephony/CarrierAppUtils.java +++ b/telephony/java/com/android/internal/telephony/CarrierAppUtils.java @@ -152,14 +152,9 @@ public final class CarrierAppUtils { && (ai.enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT || ai.enabledSetting == - PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED - || (ai.flags & ApplicationInfo.FLAG_INSTALLED) == 0)) { + PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED)) { Slog.i(TAG, "Update state(" + packageName + "): ENABLED for user " + userId); - packageManager.setSystemAppInstallState( - packageName, - true /*installed*/, - userId); packageManager.setApplicationEnabledSetting( packageName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, @@ -175,14 +170,9 @@ public final class CarrierAppUtils { if (associatedApp.enabledSetting == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT || associatedApp.enabledSetting == - PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED - || (ai.flags & ApplicationInfo.FLAG_INSTALLED) == 0) { + PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED) { Slog.i(TAG, "Update associated state(" + associatedApp.packageName + "): ENABLED for user " + userId); - packageManager.setSystemAppInstallState( - associatedApp.packageName, - true /*installed*/, - userId); packageManager.setApplicationEnabledSetting( associatedApp.packageName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, @@ -200,14 +190,15 @@ public final class CarrierAppUtils { // updated we shouldn't touch it. if (!ai.isUpdatedSystemApp() && ai.enabledSetting == - PackageManager.COMPONENT_ENABLED_STATE_DEFAULT - && (ai.flags & ApplicationInfo.FLAG_INSTALLED) != 0) { + PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) { Slog.i(TAG, "Update state(" + packageName + "): DISABLED_UNTIL_USED for user " + userId); - packageManager.setSystemAppInstallState( + packageManager.setApplicationEnabledSetting( packageName, - false /*installed*/, - userId); + PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED, + 0, + userId, + callingPackage); } // Also disable any associated apps for this carrier app if this is the first @@ -222,10 +213,13 @@ public final class CarrierAppUtils { Slog.i(TAG, "Update associated state(" + associatedApp.packageName + "): DISABLED_UNTIL_USED for user " + userId); - packageManager.setSystemAppInstallState( + packageManager.setApplicationEnabledSetting( associatedApp.packageName, - false /*installed*/, - userId); + PackageManager + .COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED, + 0, + userId, + callingPackage); } } } @@ -363,8 +357,7 @@ public final class CarrierAppUtils { String packageName) { try { ApplicationInfo ai = packageManager.getApplicationInfo(packageName, - PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS - | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS, userId); + PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS, userId); if (ai != null && ai.isSystemApp()) { return ai; } |