Block apps instead of uninstalling in the managed provisioing.

Change-Id: I1208a6b9b113a2a0cc8db8261bcba8034f1a0da0
diff --git a/src/com/android/managedprovisioning/task/DeleteNonRequiredAppsTask.java b/src/com/android/managedprovisioning/task/DeleteNonRequiredAppsTask.java
index 19933b9..34c13c1 100644
--- a/src/com/android/managedprovisioning/task/DeleteNonRequiredAppsTask.java
+++ b/src/com/android/managedprovisioning/task/DeleteNonRequiredAppsTask.java
@@ -2,7 +2,6 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.content.pm.IPackageDeleteObserver;
 import android.content.pm.IPackageManager;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
@@ -16,7 +15,6 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
-import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * Removes all apps with a launcher that are not required.
@@ -66,17 +64,17 @@
             }
         }
 
-        PackageDeleteObserver packageDeleteObserver =
-                    new PackageDeleteObserver(packagesToDelete.size());
         for (String packageName : packagesToDelete) {
             try {
-                mIpm.deletePackageAsUser(packageName, packageDeleteObserver, mUserId,
-                        PackageManager.DELETE_SYSTEM_APP);
+                mIpm.setApplicationBlockedSettingAsUser(packageName, true, mUserId);
             } catch (RemoteException neverThrown) {
                 // Never thrown, as we are making local calls.
                 ProvisionLogger.loge("This should not happen.", neverThrown);
+                mCallback.onError();
             }
         }
+
+        mCallback.onSuccess();
     }
 
     protected Set<String> getRequiredApps() {
@@ -93,31 +91,6 @@
         mCallback = callback;
     }
 
-    /**
-     * Runs the next task when all packages have been deleted or shuts down the activity if package
-     * deletion fails.
-     */
-    class PackageDeleteObserver extends IPackageDeleteObserver.Stub {
-        private final AtomicInteger packageCount = new AtomicInteger(0);
-
-        public PackageDeleteObserver(int packageCount) {
-            this.packageCount.set(packageCount);
-        }
-
-        @Override
-        public void packageDeleted(String packageName, int returnCode) {
-            if (returnCode != PackageManager.DELETE_SUCCEEDED) {
-                ProvisionLogger.logw(
-                        "Could not finish managed profile provisioning: package deletion failed");
-                mCallback.onError();
-            }
-            int currentPackageCount = packageCount.decrementAndGet();
-            if (currentPackageCount == 0) {
-                mCallback.onSuccess();
-            }
-        }
-    }
-
     public abstract static class Callback {
         public abstract void onSuccess();
         public abstract void onError();