{"package_name":"com.mediatek.gnss.nonframeworklbs","label":"MTK Non-Framework Location-Based Service","device_count":26,"observation_count":49,"user_facing_count":0,"first_seen":"2025-05-08T17:55:42Z","last_seen":"2026-08-19T10:19:54Z","guidance":{"summary":"\"MTK Non-Framework Location-Based Service\". Unlike the two engineering tools above, this one is named after a mechanism that Android itself defines, and that mechanism is the best way to understand it. AOSP's GNSS visibility control HAL covers location delivered to non-framework, or NFW, entities: parties on or off the device, such as carriers, vendors and OEMs, that receive location outside the normal Android framework path, typically through network-initiated requests. The framework hands the GNSS HAL a list of proxy applications whose package names stand in for those non-framework entities. It then watches each proxy application's location permission and the device location settings, and enables or disables non-framework location access accordingly, so that the user has visible control over it. The HAL must in turn notify the framework whenever location is delivered to, or a request rejected for, a non-framework entity.\n\nThis package's name and permission set are consistent with it being MediaTek's proxy application for that mechanism: it holds fine, coarse and background location, QUERY_ALL_PACKAGES, WRITE_SECURE_SETTINGS and POST_NOTIFICATIONS, and nothing that suggests a user-facing feature. It has no launcher icon and is never user-facing across our observations. That reading is a synthesis from the AOSP interface and the observed permissions. MediaTek does not publish documentation confirming it, so it is flagged here rather than asserted, and the descriptions of this package circulating on app-listing and content sites were not treated as sources.\n\nFor Android Enterprise, EMM and kiosk use this is a privacy and governance question, and the control is more subtle than it looks. If this is the proxy application, then its location permission is the documented lever: the framework uses that permission to decide whether the GNSS HAL may serve non-framework location at all, so withholding location permission from it is the supported way to deny carrier and vendor location access, and it keeps the user-visibility behaviour the HAL is required to provide. Disabling or removing the package instead is a different and undocumented thing to do, because the framework then has no proxy permission to evaluate, and AOSP does not describe what a HAL does in that case. Note also that AOSP requires the HAL to serve network-initiated location for user-initiated emergency calls regardless of this permission, so none of this should be treated as a way to suppress emergency location.\n\nVersion note: the visibility control interface cited carries a 2018 copyright and sits with the GNSS 2.0 HAL, and in our sample this package appears only on devices from API 30 upward, across makers including TCL, Motorola, Lenovo, Nothing, Newland, OUKITEL, Blackview, CUBOT, Ulefone, Unihertz, Infinix and NUU, reporting version 1.0 with target SDKs of 33 to 36. When MediaTek introduced it, and whether its role has changed in a recent Android release, could not be sourced.","safe_to_disable":"caution","sources":[{"title":"IGnssVisibilityControl.hal, non-framework location access and proxy applications - Android Open Source Project","url":"https://android.googlesource.com/platform/hardware/interfaces/+/master/gnss/visibility_control/1.0/IGnssVisibilityControl.hal"},{"title":"Package provenance for com.mediatek.gnss.nonframeworklbs - Android System App Database","url":"https://sysapps.bayton.org/api/packages/com.mediatek.gnss.nonframeworklbs"}],"last_verified":"2026-09-25T00:00:00Z"},"labels":[{"label":"MTK Non-Framework Location-Based Service","locale":"en-gb","count":19},{"label":"MTK Non-Framework LBS","locale":"de-at","count":10},{"label":"MTK Non-Framework LBS","locale":"en-us","count":9},{"label":"Servicio basado en ubicación (LBS) sin marco MTK","locale":"es-es","count":5},{"label":"MTK Non-Framework Location-Based Service","locale":"en","count":3},{"label":"Carrier Location Access","locale":"en-us","count":2},{"label":"Carrier location access","locale":"en-GB","count":1},{"label":"Carrier location access","locale":"en-gb","count":1},{"label":"MTK Non-Framework LBS","locale":"en","count":1},{"label":"MTK Non-Framework LBS","locale":"en-US","count":1},{"label":"MTK Non-Framework LBS (MTK не Фреймворк LBS)","locale":"ru-ru","count":1},{"label":"MTK Non-Framework Location-Based Service","locale":"en-GB","count":1},{"label":"MTK nerámcová služba určování polohy","locale":"cs-cz","count":1},{"label":"Servicio con base en la ubicación fuera del marco MTK","locale":"es-us","count":1}],"seen_on_pagination":{"paging_mode":"complete","limit":26,"offset":0,"has_more":false,"next_offset":null,"after":null,"next_after":null,"total":26},"seen_on":[{"device_id":60,"make":"ALCommon","model":"ALCommon","os_api":"35","observation_count":1,"user_facing_count":0,"last_seen":"2025-06-20T14:29:09Z"},{"device_id":163,"make":"Blackview","model":"VARG","os_api":"30","observation_count":1,"user_facing_count":0,"last_seen":"2025-09-01T13:45:53Z"},{"device_id":169,"make":"CUBOT","model":"P80","os_api":"33","observation_count":2,"user_facing_count":0,"last_seen":"2025-09-20T16:44:03Z"},{"device_id":261,"make":"INFINIX","model":"Infinix X6525B","os_api":"33","observation_count":1,"user_facing_count":0,"last_seen":"2025-12-05T08:06:06Z"},{"device_id":31,"make":"INFINIX","model":"Infinix X6871","os_api":"34","observation_count":1,"user_facing_count":0,"last_seen":"2025-05-21T20:01:57Z"},{"device_id":28,"make":"LENOVO","model":"Lenovo TB-X6C6NBF","os_api":"31","observation_count":1,"user_facing_count":0,"last_seen":"2025-05-15T11:09:01Z"},{"device_id":217,"make":"motorola","model":"moto g05","os_api":"35","observation_count":2,"user_facing_count":0,"last_seen":"2026-04-15T10:34:13Z","provenance":{"classification":"oem","vendor":"Motorola","sha256":"a76a14ef10c381cb0278f75ff53e0c28ebf9d985857418fc076f56b6d805a829"}},{"device_id":283,"make":"motorola","model":"moto g06","os_api":"35","observation_count":2,"user_facing_count":0,"last_seen":"2026-03-03T01:34:03Z"},{"device_id":231,"make":"motorola","model":"moto g15","os_api":"35","observation_count":10,"user_facing_count":0,"last_seen":"2025-11-27T12:45:18Z"},{"device_id":272,"make":"motorola","model":"moto g24","os_api":"34","observation_count":1,"user_facing_count":0,"last_seen":"2025-12-19T11:40:53Z","provenance":{"classification":"oem","vendor":"Motorola","sha256":"f9896a63b98ee6af5b898e039f7d21e8b54aa509ab449691885c67a1647b9aa1"}},{"device_id":4794,"make":"Newland","model":"NLS-MT95","os_api":"35","observation_count":1,"user_facing_count":0,"last_seen":"2026-08-19T10:19:54Z","provenance":{"classification":"oem","vendor":"Newland","sha256":"238274d5af80e177e7b036bca1ead5809673c74df5f49c94c29c25b5c8a0b15e"}},{"device_id":25,"make":"Nothing","model":"A015","os_api":"35","observation_count":2,"user_facing_count":0,"last_seen":"2025-05-14T07:26:24Z"},{"device_id":290,"make":"NUU","model":"S6707X","os_api":"34","observation_count":1,"user_facing_count":0,"last_seen":"2026-01-12T16:57:57Z"},{"device_id":18,"make":"OUKITEL","model":"WP100 TITAN","os_api":"34","observation_count":2,"user_facing_count":0,"last_seen":"2025-07-25T09:29:46Z"},{"device_id":263,"make":"OUKITEL","model":"WP100 TITAN","os_api":"35","observation_count":1,"user_facing_count":0,"last_seen":"2025-12-06T08:06:01Z"},{"device_id":105,"make":"SMT_HK","model":"Helium Pro","os_api":"31","observation_count":1,"user_facing_count":0,"last_seen":"2025-07-19T02:48:07Z"},{"device_id":182,"make":"TCL","model":"6025D_EEA","os_api":"30","observation_count":1,"user_facing_count":0,"last_seen":"2025-09-17T05:43:21Z"},{"device_id":181,"make":"TCL","model":"6165H","os_api":"33","observation_count":1,"user_facing_count":0,"last_seen":"2025-09-16T17:04:55Z"},{"device_id":291,"make":"TCL","model":"9466X","os_api":"33","observation_count":1,"user_facing_count":0,"last_seen":"2026-01-13T19:41:17Z"},{"device_id":156,"make":"TCL","model":"9491G","os_api":"34","observation_count":1,"user_facing_count":0,"last_seen":"2025-08-26T09:08:36Z"},{"device_id":320,"make":"TCL","model":"9566X","os_api":"35","observation_count":1,"user_facing_count":0,"last_seen":"2026-03-13T22:57:09Z","provenance":{"classification":"oem","vendor":"TCL","sha256":"1469e752fd54a862a7ab9c6065d7601c9d5bf156451a2114a265bd8cfe12e337"}},{"device_id":4978,"make":"TCL","model":"T517F","os_api":"36","observation_count":2,"user_facing_count":0,"last_seen":"2026-08-10T02:29:04Z","provenance":{"classification":"oem","vendor":"TCL","sha256":"a2a853dcb2e547c30216f7f7916bd8c010a4ac32651553bd0b45a4d83d21cc1a"}},{"device_id":209,"make":"TCL","model":"T610K","os_api":"34","observation_count":1,"user_facing_count":0,"last_seen":"2025-10-24T19:01:59Z"},{"device_id":201,"make":"TCL","model":"T951K","os_api":"35","observation_count":8,"user_facing_count":0,"last_seen":"2026-01-08T12:16:46Z","provenance":{"classification":"oem","vendor":"TCL","sha256":"3bdf909cbf5547b0481870a384f634c99ab9ea625437a381fc79388527b630b5"}},{"device_id":178,"make":"Ulefone","model":"Power Armor X11 Pro","os_api":"31","observation_count":1,"user_facing_count":0,"last_seen":"2025-09-15T05:09:46Z"},{"device_id":267,"make":"Unihertz","model":"Titan 2","os_api":"35","observation_count":2,"user_facing_count":0,"last_seen":"2026-01-05T18:10:15Z"}],"intelligence":{"insights":["Re-signed by each device maker with its own platform key - 6 different certificates appear across 3 device makers in our sample. That is the signature of a stock AOSP/system package every OEM builds and signs itself, not a single maker's or a third party's preinstall. These are platform-level keys: they also sign the Android framework itself.","Its largest observed manifest declares 7 permissions: 4 runtime (user-granted), 1 signature or system-level, 1 install-time and 1 vendor or uncatalogued.","APK size ranges from 0.1 MB to 3.2 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."],"device_profiles":7,"signer_count":6,"signer_consistent":false,"max_permission_count":7,"min_size_bytes":78392,"max_size_bytes":3341693,"min_target_sdk":33,"max_target_sdk":36,"oldest_version":"1.0","newest_version":"1.0","has_third_party_preinstall":false,"genuine_third_party":false,"play_eligible_count":0,"signers":[{"sha256":"1469e752fd54a862a7ab9c6065d7601c9d5bf156451a2114a265bd8cfe12e337","classification":"oem","vendor":"TCL","observation_count":1,"makes":["TCL"],"signs_framework":true,"global_make_count":1,"global_package_count":150,"global_observation_count":150},{"sha256":"238274d5af80e177e7b036bca1ead5809673c74df5f49c94c29c25b5c8a0b15e","classification":"oem","vendor":"Newland","observation_count":1,"makes":["Newland"],"signs_framework":true,"global_make_count":1,"global_package_count":113,"global_observation_count":113},{"sha256":"3bdf909cbf5547b0481870a384f634c99ab9ea625437a381fc79388527b630b5","classification":"oem","vendor":"TCL","observation_count":1,"makes":["TCL"],"signs_framework":true,"global_make_count":1,"global_package_count":172,"global_observation_count":172},{"sha256":"a2a853dcb2e547c30216f7f7916bd8c010a4ac32651553bd0b45a4d83d21cc1a","classification":"oem","vendor":"TCL","observation_count":1,"makes":["TCL"],"signs_framework":true,"global_make_count":1,"global_package_count":169,"global_observation_count":169},{"sha256":"a76a14ef10c381cb0278f75ff53e0c28ebf9d985857418fc076f56b6d805a829","classification":"oem","vendor":"Motorola","observation_count":1,"makes":["motorola"],"signs_framework":true,"global_make_count":1,"global_package_count":102,"global_observation_count":102},{"sha256":"f9896a63b98ee6af5b898e039f7d21e8b54aa509ab449691885c67a1647b9aa1","classification":"oem","vendor":"Motorola","observation_count":1,"makes":["motorola"],"signs_framework":true,"global_make_count":1,"global_package_count":95,"global_observation_count":95}],"permissions":[{"permission":"android.permission.ACCESS_BACKGROUND_LOCATION","description":"This app can access location at any time, even while the app is not in use.","official":true},{"permission":"android.permission.ACCESS_COARSE_LOCATION","description":"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.","official":true},{"permission":"android.permission.ACCESS_FINE_LOCATION","description":"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.","official":true},{"permission":"android.permission.POST_NOTIFICATIONS","description":"Allows the app to show notifications","official":true},{"permission":"android.permission.QUERY_ALL_PACKAGES","description":"Allows an app to see all installed packages.","official":true},{"permission":"android.permission.WRITE_SECURE_SETTINGS","description":"Signature or privileged system permission.","official":false},{"permission":"com.google.android.material.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION","official":false}]},"previews":{"labels":{"kind":"preview","limit":60,"total":14,"truncated":false,"collection_url":"/api/packages/com.mediatek.gnss.nonframeworklbs/labels"}},"collections":{"labels":"/api/packages/com.mediatek.gnss.nonframeworklbs/labels","seen_on":"/api/packages/com.mediatek.gnss.nonframeworklbs/seen_on"}}
