Package
com.android.captiveportallogin
CaptivePortalLogin
Guidance
The (AOSP) Captive Portal Login app. When you join a Wi-Fi network that requires a sign-in page (hotels, airports, guest networks), Android opens this app to show that page. It is not spyware and not something a normal user needs to remove. In a managed kiosk (LockTask) deployment it must be allowlisted, or the device cannot complete a captive-portal sign-in. Note there are three versions of this app, AOSP (here), Google, and OEM overlay. Determine which runs on your fleet to ensure the correct package is referenced.
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 the device maker's own signing key (QEMU), so it is an OEM preinstall, but 5 different certificates appear across the fleet, so OEMs ship their own builds of it.
- Its largest observed manifest declares 12 permissions: 3 runtime (user-granted), 2 signature or system-level, 5 install-time and 2 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 (12)
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_COARSE_LOCATION |
This app can get your approximate location from location services while the app is in use. Location services for your device must be turned on for the app to get location. |
ACCESS_FINE_LOCATION |
This app can get your precise location from location services while the app is in use. Location services for your device must be turned on for the app to get location. This may increase battery usage. |
ACCESS_NETWORK_STATE |
Allows the app to view information about network connections such as which networks exist and are connected. |
ACCESS_WIFI_STATE |
Allows the app to view information about Wi-Fi networking, such as whether Wi-Fi is enabled and name of connected Wi-Fi devices. |
FOREGROUND_SERVICE |
Allows the app to make use of foreground services. |
FOREGROUND_SERVICE_DATA_SYNC |
Allows the app to make use of foreground services with the type "dataSync" |
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. |
MAINLINE_NETWORK_STACK |
- |
POST_NOTIFICATIONS |
Allows the app to show notifications |
READ_DEVICE_CONFIG |
Signature-level system permission, for platform-signed apps. |
REQUEST_INSTALL_PACKAGES |
Allows an application to request installation of packages. |
com.android.captiveportallogin.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION |
- |
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)Appears in
Curated bundles that include this package.
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 |
|---|---|---|---|---|---|
| A-gold | Titan | Android 9.0 | - | 6 | 15 Jun 2025 |
| CipherLab | RK95 | Android 9.0 | - | 3 | 25 Sep 2025 |
| brya | Android 13 | - | 1 | 22 Jul 2025 | |
| HMD Global | Nokia 8.3 5G | Android 10 | OEM HMD Global | 1 | 25 Dec 2025 |
| Itel Mobile Limited | itel A16 Plus | Android 8.1 | OEM ITEL MOBILE LIMITED | 1 | 6 Dec 2025 |
| Lenovo | Lenovo TB-7306F | Android 11 | - | 1 | 19 Jul 2025 |
| NUU | N5501L | Android 8.1 | - | 3 | 21 Aug 2025 |
| OnePlus | OnePlus8Pro | Android 11 | OEM OnePlus | 24 | 28 Apr 2026 |
| QEMU | Standard PC (i440FX + PIIX, 1996) | Android 8.1 | OEM QEMU | 9 | 13 Feb 2026 |
| realme | RMX3690 | Android 12 | - | 1 | 25 Nov 2025 |
| Revoview | S6518 | Android 11 | - | 1 | 30 Mar 2026 |
| Samsung | SM-N950U1 | Android 9.0 | - | 1 | 20 Aug 2025 |
| Smt_hk | Helium Pro | Android 12 | - | 1 | 19 Jul 2025 |
| Smt_hk | YUMPINGO_1 | Android 9.0 | - | 1 | 9 Aug 2025 |
| Sony | I3312 | Android 8.1 | - | 1 | 17 Jun 2025 |
| TCL | 9566X | Android 15 | OEM TCL | 1 | 13 Mar 2026 |
| Unknown | GCE x86 phone | Android 9.0 | - | 1 | 7 Dec 2025 |
Known labels
Locale-aware display names seen in the wild.
| Label | Locale | Seen |
|---|---|---|
| CaptivePortalLogin | en-us | 27 |
| CaptivePortalLogin | en-gb | 8 |
| CaptivePortalLogin | en-be | 4 |
| CaptivePortalLogin | 3 | |
| CaptivePortalLogin | en-sg | 2 |
| CaptivePortalLogin | en-US | 2 |
| CaptivePortalLogin | en-ng | 2 |
| CaptivePortalLogin | en-jm | 2 |
| Captive portal login | en | 1 |
| Captive portal login | en-gb | 1 |
| CaptivePortalLogin | en-au | 1 |
| CaptivePortalLogin | en-nz | 1 |
| CaptivePortalLogin | en-ph | 1 |
| CaptivePortalLogin | en-GB | 1 |
| CaptivePortalLogin | en-tt | 1 |
| CaptivePortalLogin | en | 1 |
| CaptivePortalLogin | en-za | 1 |
| CaptivePortalLogin | ja-jp | 1 |
| CaptivePortalLogin | ru-ru | 1 |
| CaptivePortalLogin | th-th | 1 |