首页 > 解决方案 > 您可以使用 WiFiNetworkSpecifier 连接到您的 Android 设备在 Android Q 上记住的 WPA 网络吗

问题描述

长话短说,当我将前缀添加到我的代码时,我一直试图让具有 WPA 安全性的 Wifi 网络显示出来。我可以显示开放网络,但不能显示带有 WPA2/WPA3 的 wifi 网络。我错过了什么吗?谢谢!

上下文:尝试通过 WiFi 连接到设备,设备需要 WPA2 密码,并且其 WiFi 网络未显示。

WifiEnterpriseConfig wifiEnterpriseConfig = new WifiEnterpriseConfig();
        final NetworkSpecifier specifier =
                new WifiNetworkSpecifier.Builder()
                        .setSsidPattern(new PatternMatcher("test", PatternMatcher.PATTERN_PREFIX))
                        .setWpa2EnterpriseConfig(wifiEnterpriseConfig)
                        .build();

        final NetworkRequest request =
                new NetworkRequest.Builder()
                        .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
                        .setNetworkSpecifier(specifier)
                        .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                        .build();

        final ConnectivityManager connectivityManager = (ConnectivityManager)
                context.getSystemService(Context.CONNECTIVITY_SERVICE);

        final ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {

            @Override
            public void onAvailable(@NonNull Network network) {
                super.onAvailable(network);
                Log.e("wifi", "Available: "+network);
                if(getWifiConnectedListener() != null && !Thread.interrupted()) {
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                        connectivityManager.bindProcessToNetwork(network);
                    }
                    else {
                        ConnectivityManager.setProcessDefaultNetwork(network);
                    }
                }

                connectivityManager.unregisterNetworkCallback(this);
            }

            @Override
            public void onLost(@NonNull Network network) {
                super.onLost(network);
                Log.e("wifi", "Lost: "+network);


            }

            @Override
            public void onUnavailable() {
                super.onUnavailable();
                Log.e("wifi", "Unavailable");

            }
        };
        connectivityManager.requestNetwork(request, networkCallback);

标签: javaandroidandroid-wifiwifip2pwpa

解决方案


推荐阅读