Join us on the livestream at Android Dev Summit on 7-8 November 2018, starting at 10AM PDT!

DeviceAdminService

public class DeviceAdminService
extends Service

java.lang.Object
   ↳ android.content.Context
     ↳ android.content.ContextWrapper
       ↳ android.app.Service
         ↳ android.app.admin.DeviceAdminService


Base class for a service that device owner/profile owners can optionally have.

The system searches for it with an intent filter with the 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. This is useful to receive implicit broadcasts that can no longer be received by manifest receivers by apps targeting Android version Build.VERSION_CODES.O. Device/profile owners can use a runtime-registered broadcast receiver instead, and have a DeviceAdminService so that the process is always running.

Device/profile owners can use 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.

The service must be protected with the permission Manifest.permission.BIND_DEVICE_ADMIN. Otherwise the system would ignore it.

When the owner process crashes, the service will be re-bound automatically after a back-off.

Note the process may still be killed if the system is under heavy memory pressure, in which case the process will be re-started later.

Summary

Inherited constants

Public constructors

DeviceAdminService()

Public methods

final IBinder onBind(Intent intent)

Return the communication channel to the service.

Inherited methods

Public constructors

DeviceAdminService

added in API level 26
public DeviceAdminService ()

Public methods

onBind

added in API level 26
public final IBinder onBind (Intent intent)

Return the communication channel to the service. May return null if clients can not bind to the service. The returned IBinder is usually for a complex interface that has been described using aidl.

Note that unlike other application components, calls on to the IBinder interface returned here may not happen on the main thread of the process. More information about the main thread can be found in Processes and Threads.

Parameters
intent Intent: The Intent that was used to bind to this service, as given to Context.bindService. Note that any extras that were included with the Intent at that point will not be seen here.

Returns
IBinder Return an IBinder through which clients can call on to the service.