From dbe31a6616f2e8cb8436ea235149d076302fb793 Mon Sep 17 00:00:00 2001 From: Craig Lafayette Date: Thu, 2 Apr 2015 13:14:39 -0400 Subject: Send device initializer status. - Create method in DevicePolicyManager to send device provisioning status to ManagedProvisioning. - Define status updates used by ManagedProvisioning. Bug: 20001077 Change-Id: Ia98fc765d1ebb2ba9680636ca15c2c870d160261 --- .../devicepolicy/DevicePolicyManagerService.java | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'services/devicepolicy') diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index bb3085e..c500d79 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -5715,6 +5715,40 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub { } } + @Override + public void sendDeviceInitializerStatus(int statusCode, String description) { + synchronized (this) { + String packageName = getDeviceInitializer(); + if (packageName == null) { + throw new SecurityException("No device initializers"); + } + UserHandle callingUser = Binder.getCallingUserHandle(); + int deviceInitializerUid = -1; + try { + deviceInitializerUid = mContext.getPackageManager().getPackageUid( + packageName, callingUser.getIdentifier()); + } catch (NameNotFoundException e) { + throw new SecurityException(e); + } + if (Binder.getCallingUid() != deviceInitializerUid) { + throw new SecurityException("Caller must be a device initializer"); + } + long id = Binder.clearCallingIdentity(); + try { + Intent intent = new Intent( + DevicePolicyManager.ACTION_SEND_DEVICE_INITIALIZER_STATUS); + intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_INITIALIZER_STATUS_CODE, + statusCode); + intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_INITIALIZER_STATUS_DESCRIPTION, + description); + mContext.sendBroadcastAsUser(intent, callingUser, + android.Manifest.permission.RECEIVE_DEVICE_INITIALIZER_STATUS); + } finally { + restoreCallingIdentity(id); + } + } + } + /** * We need to update the internal state of whether a user has completed setup once. After * that, we ignore any changes that reset the Settings.Secure.USER_SETUP_COMPLETE changes -- cgit v1.1