Loading services/core/java/com/android/server/pm/DeletePackageHelper.java +35 −16 Original line number Diff line number Diff line Loading @@ -134,10 +134,6 @@ final class DeletePackageHelper { final int removeUser = (deleteFlags & PackageManager.DELETE_ALL_USERS) != 0 ? UserHandle.USER_ALL : userId; if (mPm.isPackageDeviceAdmin(packageName, removeUser)) { Slog.w(TAG, "Not removing package " + packageName + ": has active device admin"); return PackageManager.DELETE_FAILED_DEVICE_POLICY_MANAGER; } final PackageSetting uninstalledPs; final PackageSetting disabledSystemPs; Loading Loading @@ -699,18 +695,6 @@ final class DeletePackageHelper { final String packageName = versionedPackage.getPackageName(); final long versionCode = versionedPackage.getLongVersionCode(); if (mPm.mProtectedPackages.isPackageDataProtected(userId, packageName)) { mPm.mHandler.post(() -> { try { Slog.w(TAG, "Attempted to delete protected package: " + packageName); observer.onPackageDeleted(packageName, PackageManager.DELETE_FAILED_INTERNAL_ERROR, null); } catch (RemoteException re) { } }); return; } try { if (mPm.mInjector.getLocalService(ActivityTaskManagerInternal.class) .isBaseOfLockedTask(packageName)) { Loading Loading @@ -751,6 +735,41 @@ final class DeletePackageHelper { "deletePackage for user " + userId); } final long token = Binder.clearCallingIdentity(); try { // If a package is device admin, or is data protected for any user, it should not be // uninstalled from that user, or from any users if DELETE_ALL_USERS flag is passed. for (int user : users) { if (mPm.isPackageDeviceAdmin(packageName, user)) { mPm.mHandler.post(() -> { try { Slog.w(TAG, "Not removing package " + packageName + ": has active device admin"); observer.onPackageDeleted(packageName, PackageManager.DELETE_FAILED_DEVICE_POLICY_MANAGER, null); } catch (RemoteException e) { // no-op } }); return; } if (mPm.mProtectedPackages.isPackageDataProtected(user, packageName)) { mPm.mHandler.post(() -> { try { Slog.w(TAG, "Attempted to delete protected package: " + packageName); observer.onPackageDeleted(packageName, PackageManager.DELETE_FAILED_INTERNAL_ERROR, null); } catch (RemoteException re) { // no-op } }); return; } } } finally { Binder.restoreCallingIdentity(token); } if (mPm.isUserRestricted(userId, UserManager.DISALLOW_UNINSTALL_APPS)) { mPm.mHandler.post(() -> { try { Loading Loading
services/core/java/com/android/server/pm/DeletePackageHelper.java +35 −16 Original line number Diff line number Diff line Loading @@ -134,10 +134,6 @@ final class DeletePackageHelper { final int removeUser = (deleteFlags & PackageManager.DELETE_ALL_USERS) != 0 ? UserHandle.USER_ALL : userId; if (mPm.isPackageDeviceAdmin(packageName, removeUser)) { Slog.w(TAG, "Not removing package " + packageName + ": has active device admin"); return PackageManager.DELETE_FAILED_DEVICE_POLICY_MANAGER; } final PackageSetting uninstalledPs; final PackageSetting disabledSystemPs; Loading Loading @@ -699,18 +695,6 @@ final class DeletePackageHelper { final String packageName = versionedPackage.getPackageName(); final long versionCode = versionedPackage.getLongVersionCode(); if (mPm.mProtectedPackages.isPackageDataProtected(userId, packageName)) { mPm.mHandler.post(() -> { try { Slog.w(TAG, "Attempted to delete protected package: " + packageName); observer.onPackageDeleted(packageName, PackageManager.DELETE_FAILED_INTERNAL_ERROR, null); } catch (RemoteException re) { } }); return; } try { if (mPm.mInjector.getLocalService(ActivityTaskManagerInternal.class) .isBaseOfLockedTask(packageName)) { Loading Loading @@ -751,6 +735,41 @@ final class DeletePackageHelper { "deletePackage for user " + userId); } final long token = Binder.clearCallingIdentity(); try { // If a package is device admin, or is data protected for any user, it should not be // uninstalled from that user, or from any users if DELETE_ALL_USERS flag is passed. for (int user : users) { if (mPm.isPackageDeviceAdmin(packageName, user)) { mPm.mHandler.post(() -> { try { Slog.w(TAG, "Not removing package " + packageName + ": has active device admin"); observer.onPackageDeleted(packageName, PackageManager.DELETE_FAILED_DEVICE_POLICY_MANAGER, null); } catch (RemoteException e) { // no-op } }); return; } if (mPm.mProtectedPackages.isPackageDataProtected(user, packageName)) { mPm.mHandler.post(() -> { try { Slog.w(TAG, "Attempted to delete protected package: " + packageName); observer.onPackageDeleted(packageName, PackageManager.DELETE_FAILED_INTERNAL_ERROR, null); } catch (RemoteException re) { // no-op } }); return; } } } finally { Binder.restoreCallingIdentity(token); } if (mPm.isUserRestricted(userId, UserManager.DISALLOW_UNINSTALL_APPS)) { mPm.mHandler.post(() -> { try { Loading