You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发特定SSID连接App:从哪个Android版本起需激活GPS获取WiFi SSID?

关于Android读取WiFi SSID需激活GPS的版本确认

没错,你的判断完全正确——这个必须激活GPS(位置服务)才能读取WiFi SSID的限制,确实是从**Android 8.1 Oreo MR1(API 27)**开始引入的。

背后的原因

谷歌在API 27版本中强化了位置隐私保护机制:由于WiFi的SSID和BSSID可以被第三方用来精准定位用户的物理位置,所以官方将获取这类WiFi信息的操作,与设备的位置服务状态绑定了。在此之前(API 26及以下),只要你的App申请了ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION权限,即使位置服务关闭,也能正常读取SSID。

开发中的注意事项

  • 首先必须确保App已申请并获得ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION权限(这属于危险权限,需要动态申请)
  • 即使权限通过,若用户关闭了位置服务,调用WifiInfo.getSSID()会返回<unknown ssid>
  • 你可以通过系统API检查位置服务状态,引导用户前往设置开启:
// Kotlin示例代码
val locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
val isLocationEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) 
                        || locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)

if (!isLocationEnabled) {
    // 跳转至位置服务设置页面
    val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
    startActivity(intent)
}

内容的提问来源于stack exchange,提问作者E_Blue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 16:37:28