https://www.jianshu.com/p/03e9e50e98a8
之前写的文章,接着。Android10之后google又搞事情。
不能用。
不能用。
这个方法获取不到连接过的wifi列表了,默认返回空,也不能用。
(华为的android10还是可以,不知道是不是google对他限制之后自己做了什么。)
WifiNetworkSpecifier
官方叫用这个搞搞,WifiNetworkSpecifier,那就用这个搞搞吧。。
随着进一步的权限收紧,用这个方法连接上的WIFI ,只能在这个应用中使用,当这个应用被kill之后,连接的这个wifi会断开。
这个对于搞物联网开发,让wifi连接上家里路由器来说已经足够了。
@RequiresApi(api = Build.VERSION_CODES.Q)
private boolean connectAP_Q(String ssid, String pass) throws InterruptedException {
ConnectivityManager connectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkSpecifier specifier = new WifiNetworkSpecifier.Builder()
.setSsidPattern(new PatternMatcher(ssid, PatternMatcher.PATTERN_PREFIX))
.setWpa2Passphrase(pass)
.build();
//创建一个请求
NetworkRequest request = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)//创建的是WIFI网络。
.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)//网络不受限
.addCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED)//信任网络,增加这个连个参数让设备连接wifi之后还联网。
.setNetworkSpecifier(specifier)
.build();
connectivityManager.requestNetwork(request, new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
//TODO 连接OK,做些啥
}
@Override
public void onUnavailable() {
//TODO 连接失败,或者被用户取消了,做些啥
}
});
}