1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 设置WiFi静态ip 网关 子网掩码 dns

设置WiFi静态ip 网关 子网掩码 dns

时间:2023-09-23 06:24:35

相关推荐

设置WiFi静态ip 网关 子网掩码 dns

/*** 设置WiFi静态ip等配置** @param context* @param ip* @param gateWay* @param dns1* @param dns2*/public boolean changeWifiConfiguration(Context context,String ssid, String ip, String netMask, String gateWay, String dns1, String dns2) {try {InetAddress inetAddr = InetAddress.getByName(ip);int prefixLength =submaskStr2PrefixLen(netMask);InetAddress gatewayAddr = InetAddress.getByName(gateWay);if (TextUtils.isEmpty(dns1)){dns1="0.0.0.0";}InetAddress dns1Addr = InetAddress.getByName(dns1);if (TextUtils.isEmpty(dns2)){dns2="0.0.0.0";}InetAddress dns2Addr = InetAddress.getByName(dns2);//取得所有构造函数Class[] cl = new Class[]{InetAddress.class, int.class};Class<?> clazz = Class.forName(".LinkAddress");Constructor cons = clazz.getConstructor(cl);if (cons == null) {return false;}//给传入参数赋初值Object[] x = {inetAddr, prefixLength};//构造StaticIpConfiguration对象Class<?> staticIpConfigurationCls = Class.forName(".StaticIpConfiguration");//实例化StaticIpConfigurationObject staticIpConfiguration = null;staticIpConfiguration = staticIpConfigurationCls.newInstance();Field ipAddress = staticIpConfigurationCls.getField("ipAddress");Field gateway = staticIpConfigurationCls.getField("gateway");Field dnsServers = staticIpConfigurationCls.getField("dnsServers");//设置ipAddressipAddress.set(staticIpConfiguration, (LinkAddress) cons.newInstance(x));//设置网关gateway.set(staticIpConfiguration, gatewayAddr);//设置dnsArrayList<InetAddress> dnsList = (ArrayList<InetAddress>) dnsServers.get(staticIpConfiguration);dnsList.add(dns1Addr);dnsList.add(dns2Addr);WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(WIFI_SERVICE);WifiConfiguration wifiConfig = null;//得到连接的wifi网络WifiInfo connectionInfo = wifiManager.getConnectionInfo();if (!connectionInfo.getSSID().equals("\"" + ssid + "\"")) {return false;}@SuppressLint("MissingPermission")List<WifiConfiguration> configuredNetworks = wifiManager.getConfiguredNetworks();for (WifiConfiguration conf : configuredNetworks) {if (workId == connectionInfo.getNetworkId()) {wifiConfig = conf;break;}}@SuppressLint("PrivateApi")Class ipAssignmentCls = Class.forName(".IpConfiguration$IpAssignment");Object ipAssignment = Enum.valueOf(ipAssignmentCls, "STATIC");Method setIpAssignmentMethod = wifiConfig.getClass().getDeclaredMethod("setIpAssignment", ipAssignmentCls);setIpAssignmentMethod.invoke(wifiConfig, ipAssignment);if (null==wifiConfig.getClass()){return false;}Method setStaticIpConfigurationMethod = wifiConfig.getClass().getDeclaredMethod("setStaticIpConfiguration", staticIpConfiguration.getClass());//设置静态IP,将StaticIpConfiguration设置给WifiConfigurationsetStaticIpConfigurationMethod.invoke(wifiConfig, staticIpConfiguration);//WifiConfiguration重新添加到WifiManagerint netId = wifiManager.addNetwork(wifiConfig);wifiManager.disableNetwork(netId);boolean flag = wifiManager.enableNetwork(netId, true);return flag;} catch (Exception e) {e.printStackTrace();return false;}}/*** 将string类型的子网掩码转为prefixLength,代码如下*/public static int submaskStr2PrefixLen(String maskStr) throws Exception{StringBuffer sb;String str;int inetmask = 0;int count = 0;//检查子网掩码的格式Pattern pattern = pile("(^((\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])$)|^(\\d|[1-2]\\d|3[0-2])$");if (null!=pattern){Matcher matcher = pattern.matcher(maskStr);if (null!=matcher){boolean matches = matcher.matches();if (matches==false){return 0;}}}String[] ipSegment = maskStr.split("\\.");for (int n = 0; n < ipSegment.length; n++) {sb = new StringBuffer(Integer.toBinaryString(Integer.parseInt(ipSegment[n])));str = sb.reverse().toString();count = 0;for (int i = 0; i < str.length(); i++) {i = str.indexOf("1", i);if (i == -1) {break;}count++;}inetmask += count;}return inetmask;}

如上,设置的子网掩码一直都是0

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。