安卓哪些版本支持GPS关闭时请求定位?API23后哪些版本取消该功能?
Android定位权限与系统版本相关问题解答
Hey,针对你提出的两个问题,我来给你梳理清楚细节:
1. 哪些Android系统版本允许在GPS功能关闭的情况下发起位置请求?
在Android 10(API 29)之前的所有Android版本,都支持在GPS硬件开关关闭的前提下发起位置请求——只要你的App已经获得了对应的位置权限(ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION)。
这类请求会依赖网络定位方式(比如WiFi热点匹配、基站三角定位)来获取大致的位置信息,完全不需要GPS模块工作。哪怕用户手动关掉了系统设置里的GPS开关,只要系统的网络定位服务处于开启状态,App就能正常拿到位置数据。
2. 搭载API 23的Android设备,即使GPS关闭仍可通过网络定位获取位置,从哪个版本开始停止了该功能?
准确来说,系统并没有“停止”网络定位功能,而是从**Android 10(API 29)**开始对位置权限的管控逻辑做了更严格的调整:
- 如果App申请的是
ACCESS_FINE_LOCATION权限,但用户只开启了网络定位(关闭GPS),App只能拿到粗略位置(权限范围降级为ACCESS_COARSE_LOCATION的级别); - 到了Android 12(API 31),系统进一步细化了定位模式的权限对应关系:如果用户关闭了高精度定位模式(GPS+网络的组合模式),只保留“设备仅”(纯GPS)或“省电”(纯网络定位)模式,那么申请了
ACCESS_FINE_LOCATION的App将无法获取精细位置,只能拿到粗略位置数据。
需要注意的是,纯网络定位本身并没有被移除——如果你的App只需要粗略位置,只要拿到ACCESS_COARSE_LOCATION权限,哪怕是最新的Android版本,关闭GPS后依然可以正常通过网络定位获取位置信息。
内容的提问来源于stack exchange,提问作者Javier Castellanos Cruz




