System app database

Package

com.android.captiveportallogin

CaptivePortalLogin

17device profiles
57observations
0user-facing hits
28 Apr 2026last seen

Guidance

Disable with caution verified 30 May 2026

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.

5
signing certs
OEM-forked / varies
12
permissions
largest set observed
0.1 MB – 0.5 MB
APK size
27 – 35
target SDK
8.1.0 → 15
versions observed
5
device profiles
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.

PermissionDescription
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.

Disable for the current user
adb shell pm disable-user --user 0 com.android.captiveportallogin
Remove for the current user - a per-user uninstall; the APK stays on /system, so Restore re-adds it (-k keeps app data)
adb shell pm uninstall -k --user 0 com.android.captiveportallogin
Re-enable
adb shell pm enable com.android.captiveportallogin
Restore (re-install for the current user)
adb shell pm install-existing com.android.captiveportallogin

Appears in

Curated bundles that include this package.

Android kiosk essentials AOSP variant of the captive-portal login app, on builds without the Mainline module. Search for your device here to determine which version is in use.

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.

OEMModelAndroidProvenanceObservationsLast seen
A-gold Titan Android 9.0 - 6 15 Jun 2025
CipherLab RK95 Android 9.0 - 3 25 Sep 2025
Google 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.

LabelLocaleSeen
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