diff options
author | Craig Lafayette <craiglafa@google.com> | 2015-04-02 13:14:39 -0400 |
---|---|---|
committer | Craig Lafayette <craiglafa@google.com> | 2015-04-13 09:14:33 -0400 |
commit | dbe31a6616f2e8cb8436ea235149d076302fb793 (patch) | |
tree | 606dece49007ee258eb235b15a0467e3aba0fbbc /services/devicepolicy | |
parent | 08f90af8030c9b61f53486a694d53abd24ea9293 (diff) | |
download | frameworks_base-dbe31a6616f2e8cb8436ea235149d076302fb793.zip frameworks_base-dbe31a6616f2e8cb8436ea235149d076302fb793.tar.gz frameworks_base-dbe31a6616f2e8cb8436ea235149d076302fb793.tar.bz2 |
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
Diffstat (limited to 'services/devicepolicy')
-rw-r--r-- | services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java | 34 |
1 files changed, 34 insertions, 0 deletions
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 |