Package
com.google.android.wfcactivation
Operator setup
Guidance
"Operator setup", the label this package carries on the devices recorded here. It is Google's carrier emergency-address activation app for Wi-Fi calling, and it exists to satisfy a carrier requirement rather than to offer the user a feature of its own. It has no launcher icon and is not user-facing in our sample. The mechanism it plugs into is documented in AOSP. The carrier configuration key wfc_emergency_address_carrier_app_string holds, in Android's own words, the component name of the activity that can set up the emergency address for Wi-Fi calling as per carrier requirement. The Settings Wi-Fi calling screen reads that key, turns the value into an intent aimed at the named component, and starts it with an EXTRA_LAUNCH_CARRIER_APP extra: LAUNCH_APP_ACTIVATE before Wi-Fi calling is switched on, and LAUNCH_APP_UPDATE when the user chooses to update their emergency address. In short, this package is the activity a carrier's configuration points that key at, so that a registered emergency address exists before Wi-Fi calling can carry an emergency call. Google's own AOSP test tooling names the component com.google.android.wfcactivation/.VzwEmergencyAddressActivity and uses it to set up a Verizon VoWiFi number, which corroborates both the package's role and the US carrier context it was built for. Version note: the package name filling this role has changed across releases, and AOSP has since grown its own implementation of it. The same Google test tooling selects com.google.android.carrierentitlement/.VzwEmergencyAddressActivity on Nougat MR2 builds and com.google.android.wfcactivation/.VzwEmergencyAddressActivity on Oreo builds, so the activity moved package between those releases. From Android 12 AOSP ships ImsServiceEntitlement, an open-source implementation of the GSMA TS.43 service entitlement flow whose component com.android.imsserviceentitlement/.WfcActivationActivity is pointed at by the same carrier-config key and which can render the carrier's VoWiFi sign-up portal. Whether a given current build uses the Google package recorded here, the AOSP module, or both for different carriers could not be sourced, so treat that split as build-specific. The package is still present in our sample on devices from API 29 through 37, with target SDKs of 29 to 36. Provenance in our sample is consistent with a Google-built carrier component: it is Google-signed by certificates that do not sign the framework, it is never Play-eligible, and it appears on Google Pixel models from the Pixel 6 to the Pixel 10 Pro alongside HMD Global, Motorola, NUU and Zebra Technologies. Its permissions fit the job, including MODIFY_PHONE_STATE, WRITE_APN_SETTINGS, READ_PRIVILEGED_PHONE_STATE, restricted-network access and a setup-wizard compatibility permission. For Android Enterprise, EMM and kiosk use it has no part in enrolment, policy or management. The flow described above is the one the Settings Wi-Fi calling screen drives, so on a fleet with no SIM or no Wi-Fi calling, which covers many kiosk and single-app deployments, that path is not expected to be exercised. Whether the package has any other entry point or responsibility could not be sourced, so do not read that as the package being inert. Where it clearly does matter is a fleet using Wi-Fi calling on a carrier that requires a registered emergency address. There, disabling it removes the activity the Settings screen launches to capture or update that address, which can stop Wi-Fi calling being turned on and has obvious implications for emergency calling. What else on a build might depend on it could not be sourced, so treat disabling it as a deliberate decision and test one device on the relevant carrier first.
- CarrierConfigManager.java, KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING - Android Open Source Project →
- WifiCallingSettingsForSub.java, carrier activity intent and EXTRA_LAUNCH_CARRIER_APP - Android Open Source Project →
- TelephonyBaseTest.py, VoWiFi setup naming the wfcactivation component - Android Open Source Project (tools/test/connectivity) →
- IMS service entitlement - Android Open Source Project →
- Package provenance for com.google.android.wfcactivation - 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, though 2 different Google signing keys appear across the fleet. This certificate spans 4 device makes - the hallmark of a globally distributed Google key.
- Its largest observed manifest declares 18 permissions: 1 runtime (user-granted), 5 signature or system-level, 6 install-time and 6 vendor or uncatalogued.
- APK size ranges from 2.8 MB to 5.4 MB across the reporting device profiles, so the build differs substantially between them.
- Never reported as user-facing, so it runs as a background or system component rather than an app the user opens.
Declared permissions (18)
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_NETWORK_STATE |
Allows the app to change the state of network connectivity. |
CONNECTIVITY_USE_RESTRICTED_NETWORKS |
Signature or privileged system permission. |
FOREGROUND_SERVICE |
Allows the app to make use of foreground services. |
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. |
MODIFY_PHONE_STATE |
Signature or privileged system permission. |
POST_NOTIFICATIONS |
Allows the app to show notifications |
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_LOOPBACK_INTERFACE |
- |
WAKE_LOCK |
Allows the app to prevent the phone from going to sleep. |
WRITE_APN_SETTINGS |
Signature or privileged system permission. docs ↗ |
WRITE_SETTINGS |
Allows the app to modify the system's settings data. Malicious apps may corrupt your system's configuration. |
com.google.android.apps.carrier.log.permission.SEND_LOGS |
- |
com.google.android.providers.gsf.permission.READ_GSERVICES |
- |
com.google.android.setupwizard.SETUP_COMPAT_SERVICE |
- |
com.qualcomm.permission.USE_QCRIL_MSG_TUNNEL |
- |
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 |
|---|---|---|---|---|---|
| Pixel 10 Pro | Android 16 | 1 | 26 Mar 2026 | ||
| Pixel 10 Pro | Android 17 | 1 | 1 Nov 2026 | ||
| Pixel 6 | Android 12 | - | 1 | 22 Jun 2025 | |
| Pixel 6 | Android 16 | - | 1 | 13 Oct 2025 | |
| Pixel 6 Pro | Android 15 | - | 9 | 23 Jun 2025 | |
| Pixel 7 | Android 13 | 1 | 19 Feb 2026 | ||
| Pixel 7 Pro | Android 16 | 1 | 9 Mar 2026 | ||
| Pixel 8 | Android 16 | - | 4 | 3 Jun 2026 | |
| Pixel 8a | Android 15 | - | 1 | 5 Oct 2025 | |
| Pixel 9 Pro XL | Android 16 | 21 | 29 Mar 2026 | ||
| Pixel 9 Pro XL | Android 17 | 2 | 26 Oct 2026 | ||
| Pixel 9a | Android 15 | - | 1 | 15 Jun 2025 | |
| Pixel 9a | Android 16 | 6 | 2 Jun 2026 | ||
| Pixel 9a | Android 17 | - | 1 | 16 Jul 2026 | |
| HMD Global | Nokia 8.3 5G | Android 10 | 1 | 25 Dec 2025 | |
| Motorola | moto g - 2025 | Android 16 | 2 | 25 Oct 2026 | |
| Motorola | moto g34 5G | Android 14 | - | 1 | 2 Sep 2025 |
| Motorola | moto g85 5G | Android 14 | - | 1 | 21 Aug 2025 |
| Motorola | motorola edge 50 fusion | Android 15 | 12 | 9 Jun 2026 | |
| Motorola | motorola edge 50 fusion | Android 16 | 2 | 1 Jul 2026 | |
| Motorola | ThinkPhone by motorola | Android 14 | - | 1 | 26 Sep 2025 |
| Motorola | ThinkPhone by motorola | Android 15 | - | 1 | 11 Oct 2025 |
| NUU | S6707X | Android 14 | 1 | 12 Jan 2026 |
Known labels
Locale-aware display names seen in the wild.
| Label | Locale | Seen |
|---|---|---|
| Carrier Setup | en-us | 43 |
| Provider instellen | nl-NL | 27 |
| Operator setup | en | 22 |
| Operator setup | en-gb | 12 |
| Carrier Setup | en | 4 |
| Operator setup | en-GB | 4 |
| Operator setup | en-mt | 3 |
| Provider instellen | nl-nl | 3 |
| Carrier Setup | 2 | |
| Carrier Setup | en-US | 2 |
| Configuración del proveedor | es-us | 2 |
| Carrier Setup | en-BD | 1 |
| Carrier Setup | en-GB | 1 |
| Carrier Setup | en-bd | 1 |
| Carrier Setup | en-ca-u-fw-mon-mu-celsius | 1 |
| Carrier Setup | en-gb | 1 |
| Carrier Setup | en-us-u-fw-mon-ms-ussystem-mu-fahrenhe | 1 |
| Operator setup | 1 | |
| Operator setup | en-au | 1 |
| Operator setup | en-de | 1 |