diff options
author | Sudheer Shanka <sudheersai@google.com> | 2015-06-29 20:25:12 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-06-29 20:25:12 +0000 |
commit | 556ef71cf8f2bf58722be3eb165547dc35377c23 (patch) | |
tree | 52d101f7db8ae492c5ed446c5ede549e63ec8984 | |
parent | 41e9c6e1946c4c52c1c14a6d4b09b9fbea3c977d (diff) | |
parent | 43c85039d71571668469cfe448fccd6897bea36d (diff) | |
download | android_packages_apps_ManagedProvisioning-556ef71cf8f2bf58722be3eb165547dc35377c23.tar.gz android_packages_apps_ManagedProvisioning-556ef71cf8f2bf58722be3eb165547dc35377c23.tar.bz2 android_packages_apps_ManagedProvisioning-556ef71cf8f2bf58722be3eb165547dc35377c23.zip |
am 43c85039: Merge "Avoid deleting IMEs during DO provisioning." into mnc-dev
* commit '43c85039d71571668469cfe448fccd6897bea36d':
Avoid deleting IMEs during DO provisioning.
-rw-r--r-- | src/com/android/managedprovisioning/task/DeleteNonRequiredAppsTask.java | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/src/com/android/managedprovisioning/task/DeleteNonRequiredAppsTask.java b/src/com/android/managedprovisioning/task/DeleteNonRequiredAppsTask.java index 37357236..71f02884 100644 --- a/src/com/android/managedprovisioning/task/DeleteNonRequiredAppsTask.java +++ b/src/com/android/managedprovisioning/task/DeleteNonRequiredAppsTask.java @@ -32,6 +32,8 @@ import android.content.res.Resources; import android.os.RemoteException; import android.os.ServiceManager; import android.util.Xml; +import android.view.inputmethod.InputMethodInfo; +import android.view.inputmethod.InputMethodManager; import com.android.internal.util.FastXmlSerializer; import com.android.managedprovisioning.ProvisionLogger; @@ -80,6 +82,7 @@ public class DeleteNonRequiredAppsTask { private final List<String> mVendorRequiredAppsList; private final List<String> mVendorDisallowedAppsList; private final int mUserId; + private final int mProvisioningType; private final boolean mNewProfile; // If we are provisioning a new managed profile/device. private final boolean mLeaveAllSystemAppsEnabled; @@ -99,6 +102,7 @@ public class DeleteNonRequiredAppsTask { mCallback = callback; mContext = context; mMdmPackageName = mdmPackageName; + mProvisioningType = provisioningType; mUserId = userId; mNewProfile = newProfile; mLeaveAllSystemAppsEnabled = leaveAllSystemAppsEnabled; @@ -109,18 +113,18 @@ public class DeleteNonRequiredAppsTask { int vendorRequiredAppsListArray; int disallowedAppsListArray; int vendorDisallowedAppsListArray; - if (provisioningType == DEVICE_OWNER) { + if (mProvisioningType == DEVICE_OWNER) { requiredAppsListArray = R.array.required_apps_managed_device; disallowedAppsListArray = R.array.disallowed_apps_managed_device; vendorRequiredAppsListArray = R.array.vendor_required_apps_managed_device; vendorDisallowedAppsListArray = R.array.vendor_disallowed_apps_managed_device; - } else if (provisioningType == PROFILE_OWNER) { + } else if (mProvisioningType == PROFILE_OWNER) { requiredAppsListArray = R.array.required_apps_managed_profile; disallowedAppsListArray = R.array.disallowed_apps_managed_profile; vendorRequiredAppsListArray = R.array.vendor_required_apps_managed_profile; vendorDisallowedAppsListArray = R.array.vendor_disallowed_apps_managed_profile; } else { - throw new IllegalArgumentException("Provisioning type " + provisioningType + + throw new IllegalArgumentException("Provisioning type " + mProvisioningType + " not supported."); } @@ -169,6 +173,10 @@ public class DeleteNonRequiredAppsTask { Set<String> packagesToDelete = newApps; packagesToDelete.removeAll(getRequiredApps()); Set<String> packagesToRetain = getCurrentAppsWithLauncher(); + // Don't delete the system input method packages in case of Device owner provisioning. + if (mProvisioningType == DEVICE_OWNER) { + packagesToRetain.removeAll(getSystemInputMethods()); + } packagesToRetain.addAll(getDisallowedApps()); packagesToDelete.retainAll(packagesToRetain); @@ -235,6 +243,20 @@ public class DeleteNonRequiredAppsTask { return apps; } + private Set<String> getSystemInputMethods() { + final InputMethodManager inputMethodManager = + (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE); + List<InputMethodInfo> inputMethods = inputMethodManager.getInputMethodList(); + Set<String> systemInputMethods = new HashSet<String>(); + for (InputMethodInfo inputMethodInfo : inputMethods) { + ApplicationInfo applicationInfo = inputMethodInfo.getServiceInfo().applicationInfo; + if ((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { + systemInputMethods.add(inputMethodInfo.getPackageName()); + } + } + return systemInputMethods; + } + private void writeSystemApps(Set<String> packageNames, File systemAppsFile) { try { FileOutputStream stream = new FileOutputStream(systemAppsFile, false); |