Android10 WifiManager

//www.greatytc.com/p/03e9e50e98a8

之前写的文章,接着。Android10之后google又搞事情。
image.png

不能用。


image.png

不能用。


image.png

这个方法获取不到连接过的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 连接失败,或者被用户取消了,做些啥
            }
        });
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。