summaryrefslogtreecommitdiffstats
path: root/services/devicepolicy
diff options
context:
space:
mode:
authorCraig Lafayette <craiglafa@google.com>2015-04-02 13:14:39 -0400
committerCraig Lafayette <craiglafa@google.com>2015-04-13 09:14:33 -0400
commitdbe31a6616f2e8cb8436ea235149d076302fb793 (patch)
tree606dece49007ee258eb235b15a0467e3aba0fbbc /services/devicepolicy
parent08f90af8030c9b61f53486a694d53abd24ea9293 (diff)
downloadframeworks_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.java34
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