以编程方式连接到 Wifi Internet 时无法正常工作 android>=10

问题描述

我正在尝试在 android 中以编程方式连接到 Wifi,但问题是 wifi 正在连接,但互联网无法正常工作,尽管 wifi 有互联网,但在应用程序上却无法正常工作。当我尝试添加 NET_CAP_INTERNET 时,它会捕获块而不是连接到 wifi。我有oneplus手机,在其他一些手机中我也面临这个问题。我也尝试添加 NET_CAP_NO_RESTRICTION 但问题仍然存在。帮我解决这个问题。

对于低于 10 的 android,因为我们没有任何回调,所以我们如何知道用户输入了错误的密码。就像当用户输入错误密码时我们需要做一些事情一样。我们该怎么做?

private  void connectToWifi(String ssid,String password) {
      
        WifiManager wifiManager = (WifiManager) getActivity().getApplicationContext().getSystemService(Context.WIFI_SERVICE);
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
            try {
                WifiConfiguration wifiConfig = new WifiConfiguration();
                wifiConfig.SSID = "\"" + ssid + "\"";
                wifiConfig.preSharedKey = "\"" + password + "\"";
                int netId = wifiManager.addNetwork(wifiConfig);
                wifiManager.enableNetwork(netId,true);
                if(checkWithCurrentConnectedWifi(ssid))
                    navController.navigate(R.id.configureWififragment);
                else
                {
                    enteRSSidPassManually();
                    Toast.makeText(getActivity(),R.string.wrongCredentials,Toast.LENGTH_SHORT).show();
                }

            } catch (Exception e) {
                e.printstacktrace();
                Toast.makeText(getActivity(),R.string.wifi_connection_error,Toast.LENGTH_SHORT).show();
                count++;
            }
        } else {
            try {
                WifiNetworkSpecifier wifiNetworkSpecifier = new WifiNetworkSpecifier.Builder()
                        .setSsid(ssid)
                        .setWpa2Passphrase(password)
                        .build();

                NetworkRequest networkRequest = new NetworkRequest.Builder()
                        .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
                        .setNetworkSpecifier(wifiNetworkSpecifier)
                        .build();

                ConnectivityManager connectivityManager = (ConnectivityManager) getActivity().getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
                ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
                    @Override
                    public void onAvailable(Network network) {
                        super.onAvailable(network);

                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                            connectivityManager.bindProcesstoNetwork(network);
                        } else {
                            ConnectivityManager.setProcessDefaultNetwork(network);
                        }
                        if(checkWithCurrentConnectedWifi(ssid))
                            navController.navigate(R.id.configureWififragment);
                        else
                        {
                            Toast.makeText(getActivity(),R.string.notGatewayWifi,Toast.LENGTH_SHORT).show();
                        }
                    }

                    @Override
                    public void onLosing(@NonNull Network network,int maxmsToLive) {
                        //Toast.makeText(getActivity(),"on Losing",Toast.LENGTH_SHORT).show();
                        super.onLosing(network,maxmsToLive);
                    }

                    @Override
                    public void onLost(Network network) {


                        //Toast.makeText(getActivity(),"onLost",Toast.LENGTH_SHORT).show();
                        super.onLost(network);
                    }

                    @Override
                    public void onUnavailable() {
                      
                            
                         
                        super.onUnavailable();
                    }
                };
                connectivityManager.requestNetwork(networkRequest,networkCallback);
            } catch (Exception e) {
                Toast.makeText(getActivity(),Toast.LENGTH_SHORT).show();
                count++;
            }
        }
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)