From 879f879d6bb32d2b24a06e6e9b4cbd0d0482c0f4 Mon Sep 17 00:00:00 2001 From: "insight.lee" Date: Mon, 8 May 2017 16:10:12 +0900 Subject: [PATCH] Allow ManagedProvisioning to silently uninstall apps 1. During device owner provisioning, ManagedProvisioning uninstalls non-required apps. Apps to remove are all system apps in the reference device. On the other hand, OEM devices have several non system apps, so ManagedProvisioning can not uninstall them and can not complete device owner provisioning permarnently. 2. This commit allows ManagedProvisioning having MANAGE_PROFILE_AND_DEVICE_OWNERS permission to uninstall non-required apps silently. Bug: 37681141 Test: manual Signed-off-by : Sungmin Lee Merged-In: I201b070f4bcf453a2ffb391600853c7e595aec5d Change-Id: I201b070f4bcf453a2ffb391600853c7e595aec5d --- .../com/android/server/pm/PackageManagerService.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 2391abd9640ae..3c2d6eb98e960 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -16,6 +16,7 @@ package com.android.server.pm; +import static android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS; import static android.Manifest.permission.READ_EXTERNAL_STORAGE; import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE; import static android.Manifest.permission.WRITE_MEDIA_STORAGE; @@ -15627,6 +15628,14 @@ public class PackageManagerService extends IPackageManager.Stub { callingUid == getPackageUid(mStorageManagerPackage, 0, callingUserId)) { return true; } + + // Allow caller having MANAGE_PROFILE_AND_DEVICE_OWNERS permission to silently + // uninstall for device owner provisioning. + if (checkUidPermission(MANAGE_PROFILE_AND_DEVICE_OWNERS, callingUid) + == PERMISSION_GRANTED) { + return true; + } + return false; }