diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/InstallPackageHelper.java | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/pm/InstallPackageHelper.java b/services/core/java/com/android/server/pm/InstallPackageHelper.java index a0d5ea875abf..4b76cb80dd05 100644 --- a/services/core/java/com/android/server/pm/InstallPackageHelper.java +++ b/services/core/java/com/android/server/pm/InstallPackageHelper.java @@ -686,6 +686,9 @@ final class InstallPackageHelper { (installFlags & PackageManager.INSTALL_INSTANT_APP) != 0; final boolean fullApp = (installFlags & PackageManager.INSTALL_FULL_APP) != 0; + final boolean isPackageDeviceAdmin = mPm.isPackageDeviceAdmin(packageName, userId); + final boolean isProtectedPackage = mPm.mProtectedPackages != null + && mPm.mProtectedPackages.isPackageStateProtected(userId, packageName); // writer synchronized (mPm.mLock) { @@ -694,7 +697,8 @@ final class InstallPackageHelper { if (pkgSetting == null || pkgSetting.getPkg() == null) { return Pair.create(PackageManager.INSTALL_FAILED_INVALID_URI, intentSender); } - if (instantApp && (pkgSetting.isSystem() || pkgSetting.isUpdatedSystemApp())) { + if (instantApp && (pkgSetting.isSystem() || pkgSetting.isUpdatedSystemApp() + || isPackageDeviceAdmin || isProtectedPackage)) { return Pair.create(PackageManager.INSTALL_FAILED_INVALID_URI, intentSender); } if (!snapshot.canViewInstantApps(callingUid, UserHandle.getUserId(callingUid))) { |