Package
com.google.android.devicelockcontroller
DeviceLockController
Guidance
Labelled "DeviceLockController", this appears to be Google's own build of the AOSP Device Lock Controller (com.android.devicelockcontroller, documented separately on this site). Tooling maintained by the LineageOS and GrapheneOS projects maps com.google.android.devicelockcontroller to com.android.devicelockcontroller, in the same lists that pair other Google-named packages such as com.google.android.documentsui with their AOSP names. If it is that build, it is the on-device side of Android's device lock feature: Google's DeviceLockManager reference describes a feature used by special "kiosk apps", downloaded and installed by a device lock solution, to lock and unlock a device, with a financed device as the typical use case, where the financing entity can lock the device after a missed payment and only a limited set of interactions (for example, placing emergency calls) remains allowed. Note that "kiosk app" here means the device lock solution's app, not an EMM kiosk or dedicated-device setup. In our sample it is recorded on Google, Motorola, Xiaomi, TCL, vivo and Infinix devices. Where this site holds signer data, which is 5 of those 6 makes (all but Infinix), it is signed by a key this site classifies as Google's, not one that also signs the Android framework. It requests, among others, INTERNET, com.google.android.c2dm.permission.RECEIVE, INSTALL_PACKAGES, MASTER_CLEAR and several MANAGE_DEVICE_POLICY permissions including MANAGE_DEVICE_POLICY_LOCK_TASK. This site aggregates permissions across observations rather than per build, so which builds request which permissions cannot be established. Version note: DeviceLockManager is documented as added in API level 34 (Android 14), and this site has only observed this package on devices reporting API 34 to 37, consistent with that. This site's roll-up reports version strings from "16" to "17" and target SDKs from 35 to 37. One Motorola firmware dump in a third-party GitHub repository ships an enable-disable-packages file that sets this package's default action to "disable", with a criterion to enable it when the system property ro.mot.gms.dlc2 is true, so on that build its default state depends on that property. The property's value on shipping devices, and whether other makers do the same, could not be established. For Android Enterprise, EMM and kiosk use, no enrolment or management role is identified in the sources cited here; the typical use case Google documents for the device lock feature is a financed device. No role for it outside such a programme is documented in these sources, but if a device genuinely is financed, interfering with it could matter. Treat it with caution rather than disabling it by default.
- DeviceLockManager - API reference - Android Developers →
- android.devicelock - API reference - Android Developers →
- dev/rro/target_package.py - LineageOS/scripts - GitHub →
- arsclib Constants.java - GrapheneOS/platform_tools_arsclib - GitHub →
- enable-disable-com.google.android.devicelockcontroller.xml - Motorola firmware dump (RandomPush/motorola_vienna_dump) - GitHub →
- Package provenance for com.google.android.devicelockcontroller - Android System App Database →
Package intelligence
Observed signing, permission, version and size signals from contributing devices - descriptive of that sample, not a verdict. These come from the v2 Package Search sync, which not every device has contributed to yet, so for some packages this detail is partial or not present at all.
- Signed by Google's own signing key (the same key Google uses across devices), so it is a Google-provided preinstall that updates independently of the system image, and that single certificate is consistent across all 10 device profiles. This certificate spans 5 device makes - the hallmark of a globally distributed Google key.
- Its largest observed manifest declares 31 permissions: 1 runtime (user-granted), 14 signature or system-level, 7 install-time and 9 vendor or uncatalogued.
- Never reported as user-facing, so it runs as a background or system component rather than an app the user opens.
Declared permissions (31)
Largest permission set observed for this package. Text is Android's own published description where one exists; platform permissions Android does not document show their granted protection level (in grey) instead; vendor or unknown constants show the name only.
| Permission | Description |
|---|---|
ACCESS_LOCAL_NETWORK |
- |
ACCESS_NETWORK_STATE |
Allows the app to view information about network connections such as which networks exist and are connected. |
CHANGE_COMPONENT_ENABLED_STATE |
Signature or privileged system permission. |
CONNECTIVITY_USE_RESTRICTED_NETWORKS |
Signature or privileged system permission. |
FOREGROUND_SERVICE |
Allows the app to make use of foreground services. |
INSTALL_EXISTING_PACKAGES |
- |
INSTALL_PACKAGES |
Signature or privileged system permission. |
INTERACT_ACROSS_USERS |
Signature or privileged system permission. |
INTERNET |
Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet. |
MANAGE_DEVICE_POLICY_APPS_CONTROL |
Internal platform permission, granted only by the system. |
MANAGE_DEVICE_POLICY_CALLS |
Internal platform permission, granted only by the system. |
MANAGE_DEVICE_POLICY_DEBUGGING_FEATURES |
Internal platform permission, granted only by the system. |
MANAGE_DEVICE_POLICY_INSTALL_UNKNOWN_SOURCES |
Internal platform permission, granted only by the system. |
MANAGE_DEVICE_POLICY_LOCK_TASK |
Internal platform permission, granted only by the system. |
MANAGE_DEVICE_POLICY_SAFE_BOOT |
Internal platform permission, granted only by the system. |
MANAGE_DEVICE_POLICY_TIME |
Internal platform permission, granted only by the system. |
MASTER_CLEAR |
Signature or privileged system permission. |
POST_NOTIFICATIONS |
Allows the app to show notifications |
QUERY_ALL_PACKAGES |
Allows an app to see all installed packages. |
READ_DEVICE_CONFIG |
Signature-level system permission, for platform-signed apps. |
READ_PRIVILEGED_PHONE_STATE |
Signature or privileged system permission. docs ↗ |
RECEIVE_BOOT_COMPLETED |
Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running. |
USE_EXACT_ALARM |
This app can schedule actions like alarms and reminders to notify you at a desired time in the future. |
WAKE_LOCK |
Allows the app to prevent the phone from going to sleep. |
com.android.devicelock.permission.START_KIOSK_SETUP_ACTIVITY |
- |
com.android.devicelockcontroller.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION |
- |
com.android.devicelockcontroller.permission.MANAGE_DEVICE_LOCK_SERVICE_FROM_CONTROLLER |
- |
com.google.android.c2dm.permission.RECEIVE |
- |
com.google.android.devicelockcontroller.permission.C2D_MESSAGE |
- |
com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE |
- |
com.google.android.gms.permission.AD_ID |
- |
Manage on devices
ADB commands for this package (the inverse of each is included so you can undo). Run from an authorised shell or wire the equivalent into your DPC. Verify on a test device first - this database doesn’t yet classify which packages are safe to change. --user 0 targets the current user; drop it (and use a privileged shell) to act device-wide.
/system, so Restore re-adds it (-k keeps app data)Seen on
Each record is a device profile (make + model + Android version). Each unique handset that syncs against a matching profile will increase the observations of a package, thereby increasing confidence that a package is expected to be on a device.
| OEM | Model | Android | Provenance | Observations | Last seen |
|---|---|---|---|---|---|
| GMS on ARM64 | Android 14 | - | 1 | 16 Sep 2025 | |
| Pixel 10 Pro | Android 17 | 1 | 2 Nov 2026 | ||
| Pixel 6 Pro | Android 15 | - | 9 | 23 Jun 2025 | |
| Pixel 8a | Android 15 | - | 1 | 5 Oct 2025 | |
| Pixel 9a | Android 15 | - | 1 | 15 Jun 2025 | |
| Pixel 9a | Android 16 | 6 | 2 Jun 2026 | ||
| Pixel 9a | Android 17 | - | 1 | 16 Jul 2026 | |
| Infinix | Infinix X6871 | Android 14 | - | 1 | 21 May 2025 |
| Motorola | moto g05 | Android 15 | 2 | 15 Apr 2026 | |
| Motorola | moto g15 | Android 15 | - | 10 | 27 Nov 2025 |
| Motorola | motorola edge 50 fusion | Android 15 | 12 | 9 Jun 2026 | |
| Motorola | ThinkPhone by motorola | Android 15 | - | 1 | 11 Oct 2025 |
| TCL | T517F | Android 16 | 2 | 10 Aug 2026 | |
| TCL | T951K | Android 15 | 8 | 8 Jan 2026 | |
| vivo | V2550 | Android 16 | 1 | 21 Jul 2026 | |
| Xiaomi | 23106RN0DA | Android 15 | - | 1 | 22 May 2025 |
| Xiaomi | 23124RA7EO | Android 15 | - | 1 | 17 Jun 2025 |
| Xiaomi | 24117RN76O | Android 15 | 1 | 28 Dec 2025 | |
| Xiaomi | 24117RN76O | Android 16 | 1 | 20 Mar 2026 |
Known labels
Locale-aware display names seen in the wild.
| Label | Locale | Seen |
|---|---|---|
| DeviceLockController | en-us | 23 |
| DeviceLockController | nl-NL | 21 |
| DeviceLockController | en-gb | 16 |
| DeviceLockController | de-at | 10 |
| DeviceLockController | en | 4 |
| DeviceLockController | 2 | |
| DeviceLockController | en-mt | 2 |
| DeviceLockController | es-us | 2 |
| DeviceLockController | vi-VN | 2 |
| DeviceLockController | vi-vn | 2 |
| DeviceLockController | cs-cz | 1 |
| DeviceLockController | en-BD | 1 |
| DeviceLockController | en-GB | 1 |
| DeviceLockController | en-bd | 1 |
| DeviceLockController | es-US | 1 |
| DeviceLockController | nl-nl | 1 |
| DeviceLockController | ru-ru | 1 |