Merge "Fix bug in update intents between provisioning service and activity."
diff --git a/Android.mk b/Android.mk
index e0d17a5..c434101 100644
--- a/Android.mk
+++ b/Android.mk
@@ -3,6 +3,8 @@
 
 LOCAL_MODULE_TAGS := optional
 
+LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4
+
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
 LOCAL_PACKAGE_NAME := ManagedProvisioning
diff --git a/src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java b/src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java
index b12fe1f..23f55b9 100644
--- a/src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java
+++ b/src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java
@@ -26,6 +26,7 @@
 import android.content.IntentFilter;
 import android.os.Bundle;
 import android.provider.Settings.Global;
+import android.support.v4.content.LocalBroadcastManager;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.TextView;
@@ -93,7 +94,7 @@
         filter.addAction(DeviceOwnerProvisioningService.ACTION_PROVISIONING_ERROR);
         filter.addAction(DeviceOwnerProvisioningService.ACTION_PROGRESS_UPDATE);
         filter.addAction(DeviceOwnerProvisioningService.ACTION_REQUEST_ENCRYPTION);
-        registerReceiver(mServiceMessageReceiver, filter);
+        LocalBroadcastManager.getInstance(this).registerReceiver(mServiceMessageReceiver, filter);
 
         // Start service.
         Intent intent = new Intent(this, DeviceOwnerProvisioningService.class);
@@ -148,7 +149,7 @@
     @Override
     public void onDestroy() {
         ProvisionLogger.logd("Device owner provisioning activity ONDESTROY");
-        unregisterReceiver(mServiceMessageReceiver);
+        LocalBroadcastManager.getInstance(this).unregisterReceiver(mServiceMessageReceiver);
         super.onDestroy();
     }
 
diff --git a/src/com/android/managedprovisioning/DeviceOwnerProvisioningService.java b/src/com/android/managedprovisioning/DeviceOwnerProvisioningService.java
index 0923601..40bfa4a 100644
--- a/src/com/android/managedprovisioning/DeviceOwnerProvisioningService.java
+++ b/src/com/android/managedprovisioning/DeviceOwnerProvisioningService.java
@@ -27,6 +27,7 @@
 import android.os.IBinder;
 import android.provider.Settings.Global;
 import android.provider.Settings.Secure;
+import android.support.v4.content.LocalBroadcastManager;
 
 import com.android.internal.app.LocalePicker;
 import com.android.managedprovisioning.task.AddWifiNetworkTask;
@@ -260,7 +261,7 @@
         Intent intent = new Intent(ACTION_PROVISIONING_ERROR);
         intent.setClass(this, DeviceOwnerProvisioningActivity.ServiceMessageReceiver.class);
         intent.putExtra(EXTRA_USER_VISIBLE_ERROR_ID_KEY, dialogMessage);
-        sendBroadcast(intent);
+        LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
 
         stopSelf(mStartIdProvisioning);
     }
@@ -276,7 +277,7 @@
         Intent intent = new Intent(ACTION_PROGRESS_UPDATE);
         intent.putExtra(EXTRA_PROGRESS_MESSAGE_ID_KEY, mLastProgressMessage);
         intent.setClass(this, DeviceOwnerProvisioningActivity.ServiceMessageReceiver.class);
-        sendBroadcast(intent);
+        LocalBroadcastManager.getInstance(this).sendBroadcast(intent);
     }
 
     private void requestEncryption(String propertiesForResume) {
@@ -293,7 +294,7 @@
     private void onProvisioningSuccess(String deviceAdminPackage) {
         Intent successIntent = new Intent(ACTION_PROVISIONING_SUCCESS);
         successIntent.setClass(this, DeviceOwnerProvisioningActivity.ServiceMessageReceiver.class);
-        sendBroadcast(successIntent);
+        LocalBroadcastManager.getInstance(this).sendBroadcast(successIntent);
 
         // Skip the setup wizard.
         Global.putInt(getContentResolver(), Global.DEVICE_PROVISIONED, 1);
diff --git a/src/com/android/managedprovisioning/ManagedProvisioningActivity.java b/src/com/android/managedprovisioning/ManagedProvisioningActivity.java
index daca009..70efeb6 100644
--- a/src/com/android/managedprovisioning/ManagedProvisioningActivity.java
+++ b/src/com/android/managedprovisioning/ManagedProvisioningActivity.java
@@ -33,6 +33,7 @@
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.os.UserManager;
+import android.support.v4.content.LocalBroadcastManager;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -89,7 +90,7 @@
         IntentFilter filter = new IntentFilter();
         filter.addAction(ManagedProvisioningService.ACTION_PROVISIONING_SUCCESS);
         filter.addAction(ManagedProvisioningService.ACTION_PROVISIONING_ERROR);
-        registerReceiver(mServiceMessageReceiver, filter);
+        LocalBroadcastManager.getInstance(this).registerReceiver(mServiceMessageReceiver, filter);
 
         // Initialize member variables from the intent, stop if the intent wasn't valid.
         try {
@@ -229,7 +230,7 @@
 
     @Override
     public void onDestroy() {
-        unregisterReceiver(mServiceMessageReceiver);
+        LocalBroadcastManager.getInstance(this).unregisterReceiver(mServiceMessageReceiver);
         super.onDestroy();
     }
 
diff --git a/src/com/android/managedprovisioning/ManagedProvisioningService.java b/src/com/android/managedprovisioning/ManagedProvisioningService.java
index 752de0b..33d4d37 100644
--- a/src/com/android/managedprovisioning/ManagedProvisioningService.java
+++ b/src/com/android/managedprovisioning/ManagedProvisioningService.java
@@ -25,6 +25,7 @@
 import android.os.ServiceManager;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.support.v4.content.LocalBroadcastManager;
 import android.text.TextUtils;
 
 import com.android.managedprovisioning.task.DeleteNonRequiredAppsTask;
@@ -373,8 +374,7 @@
      */
     private void onProvisioningSuccess(ComponentName deviceAdminComponent) {
         Intent successIntent = new Intent(ACTION_PROVISIONING_SUCCESS);
-        successIntent.setClass(this, ManagedProvisioningActivity.ServiceMessageReceiver.class);
-        sendBroadcast(successIntent);
+        LocalBroadcastManager.getInstance(this).sendBroadcast(successIntent);
 
         sendProvisioningCompleteToManagedProfile(this);
         stopSelf(mStartIdProvisioning);