测试手机:
小米手机
Android版本:
12
问题描述:
使用测试手机扫描二维码得到WiFi的ssid和密码,然后使用Android官方文档上的10以上的点对点连接方案,设备连接上了一个ssid一样的WiFi,但是查看WiFi列表时会发现存在两个名称一样的WiFi,分别查看详情,连接上的WiFi并没有很多详细的信息,而另一个WiFi可以查看很多详细的信息,例如mac地址等。
问题相关代码:
val specifier: NetworkSpecifier = WifiNetworkSpecifier.Builder()
.setSsidPattern(PatternMatcher(wifiName, PatternMatcher.PATTERN_LITERAL))
.setWpa2Passphrase(wifPassword)
.build()
val request = NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.setNetworkSpecifier(specifier)
.build()
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val networkCallback: ConnectivityManager.NetworkCallback = object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
super.onAvailable(network)
// do success processing here..x
}
override fun onUnavailable() {
super.onUnavailable()
// do failure processing here..
ToastUtils.showShort("无线连接失败,请手动连接")
connectivityManager.unregisterNetworkCallback(this);
}
}
connectivityManager.requestNetwork(request, networkCallback)
运行结果及报错内容:
在WiFi列表中显示成功连接了指定WiFi,但是是一个假的WiFi,真实的WiFi没有连接上、无报错内容。
我的解答思路和尝试过的方法 :
因为官方文档提供的方式有两个,一、适用于互联网连接的 WLAN 建议 API,二、适用于对等连接的 WLAN 网络请求 API,以上代码使用的是第二种方法。尝试过第一种方法,但是当调用完方法,界面会显示是否允许建议的弹窗,无论点击哪个后都没有反应了。
我想要达到的结果:
能有一种方法连接正确的指定WiFi。