uniapp 开发微信小程序 uni.getconnectedwifi 在安卓系统中无法获取到当前连接的wifi怎么解决?
在uniapp开发微信小程序时,使用uni.getConnectedWifi接口在安卓设备上无法获取当前连接的WiFi信息,iOS端正常。尝试过检查权限配置和真机调试,但依然无法获取数据。请问是否有兼容性解决方案?或者需要特殊配置才能让安卓设备正常获取WiFi信息?
2 回复
安卓系统权限限制,需手动开启位置权限。检查是否已授权,或在代码中动态申请位置权限。
在 UniApp 开发微信小程序时,uni.getConnectedWifi 在安卓系统中无法获取到当前连接的 Wi-Fi 是一个常见问题,主要原因是微信小程序平台的安全限制和安卓系统的权限差异。以下是解决方案:
1. 检查权限配置
确保在 manifest.json 中正确配置了 Wi-Fi 权限(仅适用于 App 平台,小程序无需配置,但需注意平台差异):
{
"permissions": {
"getConnectedWifi": {}
}
}
注意:微信小程序中,此配置不适用,需依赖微信的 API 权限。
2. 使用条件编译处理平台差异
由于安卓和 iOS 行为可能不同,使用条件编译来适配:
// 在页面或方法中调用
getWifiInfo() {
// #ifdef MP-WEIXIN
uni.getConnectedWifi({
success: (res) => {
console.log('Wi-Fi 信息:', res.wifi);
// 处理获取到的 Wi-Fi 数据
},
fail: (err) => {
console.error('获取 Wi-Fi 失败:', err);
// 安卓常见错误:可能返回 fail 或无数据
this.showErrorTips();
}
});
// #endif
}
3. 处理安卓特定问题
- 用户授权:在安卓上,首次调用可能需用户授权。引导用户在微信小程序设置中开启“Wi-Fi”权限(路径:小程序右上角 → 设置 → 权限管理)。
- 系统限制:部分安卓机型或系统版本(如 Android 10 及以上)由于隐私政策,可能限制获取 Wi-Fi 信息。提示用户检查系统权限。
- 网络状态:确保设备已连接 Wi-Fi(而非移动数据),并尝试重新连接网络后重试。
4. 降级处理或替代方案
如果持续失败,可提供降级方案:
- 提示用户手动输入 Wi-Fi 名称(例如,在表单中填写 SSID)。
- 使用
uni.getNetworkType获取网络类型作为备用:uni.getNetworkType({ success: (res) => { if (res.networkType === 'wifi') { console.log('当前使用 Wi-Fi,但无法获取详情'); // 执行其他逻辑 } } });
5. 测试与调试
- 在微信开发者工具中测试基础功能,但真机调试至关重要(尤其安卓真机)。
- 查看失败回调的
err对象,根据错误码处理(如err.errCode为 1200x 系列)。 - 更新微信客户端至最新版本,避免旧版本 API 兼容问题。
总结
该问题多由安卓系统权限或微信限制导致。通过授权引导、条件编译和降级处理,大部分场景可缓解。若问题持续,考虑反馈至微信开放社区或检查小程序基础库版本。

