小米手机
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。
.setSsidPattern(PatternMatcher(wifiName, PatternMatcher.PATTERN_PREFIX))
试试