diff options
| author | Makoto Onuki <omakoto@google.com> | 2017-03-22 14:22:35 -0700 |
|---|---|---|
| committer | Makoto Onuki <omakoto@google.com> | 2017-03-31 14:50:20 -0700 |
| commit | fc73d799e95f512628da326b0e69ea314f92a5aa (patch) | |
| tree | 68bbe2eba535df1bc15b161215b1a596b48073e7 /core/java/android | |
| parent | 6f3bc05868061cfcc63e8fe8cb00147b03c1c64a (diff) | |
Persistent connection to DO/PO service.
Test: Manual test with customize API tests; CTS coming.
Change-Id: I1d7eaa4b1fdd20726c1832c736d32f934c6a82f9
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/app/admin/DeviceAdminService.java | 56 | ||||
| -rw-r--r-- | core/java/android/app/admin/DevicePolicyManager.java | 10 | ||||
| -rw-r--r-- | core/java/android/app/admin/IDeviceAdminService.aidl | 23 |
3 files changed, 89 insertions, 0 deletions
diff --git a/core/java/android/app/admin/DeviceAdminService.java b/core/java/android/app/admin/DeviceAdminService.java new file mode 100644 index 000000000000..cd0b1bf3d0a8 --- /dev/null +++ b/core/java/android/app/admin/DeviceAdminService.java @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.app.admin; + +import android.app.Service; +import android.content.ComponentName; +import android.content.Intent; +import android.os.IBinder; + +/** + * Base class for a service that device owner/profile owners can optionally have. + * + * <p>The system searches for it with an intent filter with the + * {@link DevicePolicyManager#ACTION_DEVICE_ADMIN_SERVICE} action, and tries to keep a bound + * connection as long as the hosting user is running, so that the device/profile owner is always + * considered to be in the foreground. + * + * <p>Device/profile owners can use + * {@link android.content.pm.PackageManager#setComponentEnabledSetting(ComponentName, int, int)} + * to disable/enable its own service. For example, when a device/profile owner no longer needs + * to be in the foreground, it can (and should) disable its service. + * + * <p>The service must not be exported. + * + * <p>TODO: Describe how the system handles crashes in DO/PO. + */ +public class DeviceAdminService extends Service { + private final IDeviceAdminServiceImpl mImpl; + + public DeviceAdminService() { + mImpl = new IDeviceAdminServiceImpl(); + } + + @Override + public final IBinder onBind(Intent intent) { + return mImpl.asBinder(); + } + + private class IDeviceAdminServiceImpl extends IDeviceAdminService.Stub { + } + + // So far, we have no methods in this class. +} diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index 6d8d5e93c1ee..2f0a630bcd04 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -1515,6 +1515,16 @@ public class DevicePolicyManager { public @interface ProvisioningPreCondition {} /** + * Service action: Action for a service that device owner and profile owner can optionally + * own. If a device owner or a profile owner has such a service, the system tries to keep + * a bound connection to it, in order to keep their process always running. + * The service must not be exported. + */ + @SdkConstant(SdkConstantType.SERVICE_ACTION) + public static final String ACTION_DEVICE_ADMIN_SERVICE + = "android.app.action.DEVICE_ADMIN_SERVICE"; + + /** * Return true if the given administrator component is currently active (enabled) in the system. * * @param admin The administrator component to check for. diff --git a/core/java/android/app/admin/IDeviceAdminService.aidl b/core/java/android/app/admin/IDeviceAdminService.aidl new file mode 100644 index 000000000000..5276ed599226 --- /dev/null +++ b/core/java/android/app/admin/IDeviceAdminService.aidl @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2017 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.app.admin; + +/** + * @hide + */ +interface IDeviceAdminService { +} |
