Android 11/12/13获取已安装Passpoint配置文件失败求助
解决Passpoint网络配置后
getConfiguredNetworks()返回null的问题 核心原因
getConfiguredNetworks()仅返回传统SSID型Wi-Fi配置,Passpoint配置在不同Android版本的存储机制与传统Wi-Fi完全分离:
- Android 11(R)及以上:通过
WifiNetworkSuggestion添加的Passpoint属于网络建议范畴,不在getConfiguredNetworks()的返回集合中。 - Android 10(Q)及以下:通过
addOrUpdatePasspointConfiguration()添加的Passpoint配置,需用专门的Passpoint API查询,而非getConfiguredNetworks()。
解决方案
1. Android 11+:获取Passpoint网络建议
替换getConfiguredNetworks(),改用getNetworkSuggestions()获取你添加的Passpoint配置:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { val suggestions = wifiManager.networkSuggestions suggestions.forEach { suggestion -> suggestion.passpointConfig?.let { config -> // 处理Passpoint配置 Timber.tag(TAG).d("已配置Passpoint FQDN: ${config.homeSp?.fqdn}") } } }
2. Android 10及以下:获取Passpoint配置列表
使用getPasspointConfigurations()直接查询已添加的Passpoint配置:
if (Build.VERSION.SDK_INT in Build.VERSION_CODES.P..Build.VERSION_CODES.Q) { val passpointConfigs = wifiManager.passpointConfigurations passpointConfigs?.forEach { config -> Timber.tag(TAG).d("已配置Passpoint FQDN: ${config.homeSp?.fqdn}") } }
3. 检查权限完整性
确保在AndroidManifest.xml声明权限,并在运行时请求:
- Android 12+:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" /> - Android 11及以下:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
4. 验证Passpoint配置参数
确认你的配置参数完全符合运营商要求:
eapType=21对应EAP-TTLS,需确认运营商是否支持该认证类型nonEapInnerMethod="PAP"需与运营商的内部认证流程匹配realm值必须与运营商的认证域名完全一致
补充说明
getConfiguredNetworks()是为传统SSID网络设计的API,Passpoint作为Hotspot 2.0标准的配置,有独立的管理和查询接口,切勿混淆两者的使用场景。
内容的提问来源于stack exchange,提问作者Rawal A
相关产品推荐
相关产品推荐

