设置Wifi的吗?你又不说Android的版本,4.0和5.0是不一样的,然后6.0之后是不能设置的。 我对你们公司比较服气,这么重要的功能居然让一个实习生去做,这是想转嫁责任?(别以为我不知道你们公司想干嘛。) 发个5.0的吧 void changeWifiConfiguration(boolean dhcp, String ip, int prefix, String dns1, String gateway) { WifiManager wm = (WifiManager) getSystemService(Context.WIFI_SERVICE); if(!wm.isWifiEnabled()) { // wifi is disabled return; } // get the current wifi configuration WifiConfiguration wifiConf = null; WifiInfo connectionInfo = wm.getConnectionInfo(); List<WifiConfiguration> configuredNetworks = wm.getConfiguredNetworks(); if(configuredNetworks != null) { for (WifiConfiguration conf : configuredNetworks){ if (conf.networkId == connectionInfo.getNetworkId()){ wifiConf = conf; break; } } } if(wifiConf == null) { // wifi is not connected return; } try { Class<?> ipAssignment = wifiConf.getClass().getMethod("getIpAssignment").invoke(wifiConf).getClass(); Object staticConf = wifiConf.getClass().getMethod("getStaticIpConfiguration").invoke(wifiConf); if(dhcp) { wifiConf.getClass().getMethod("setIpAssignment", ipAssignment).invoke(wifiConf, Enum.valueOf((Class<Enum>) ipAssignment, "DHCP")); if(staticConf != null) { staticConf.getClass().getMethod("clear").invoke(staticConf); } } else { wifiConf.getClass().getMethod("setIpAssignment", ipAssignment).invoke(wifiConf, Enum.valueOf((Class<Enum>) ipAssignment, "STATIC")); if(staticConf == null) { Class<?> staticConfigClass = Class.forName("android.net.StaticIpConfiguration"); staticConf = staticConfigClass.newInstance(); } // STATIC IP AND MASK PREFIX Constructor<?> laConstructor = LinkAddress.class.getConstructor(InetAddress.class, int.class); LinkAddress linkAddress = (LinkAddress) laConstructor.newInstance( InetAddress.getByName(ip), prefix); staticConf.getClass().getField("ipAddress").set(staticConf, linkAddress); // GATEWAY staticConf.getClass().getField("gateway").set(staticConf, InetAddress.getByName(gateway)); // DNS List<InetAddress> dnsServers = (List<InetAddress>) staticConf.getClass().getField("dnsServers").get(staticConf); dnsServers.clear(); dnsServers.add(InetAddress.getByName(dns1)); dnsServers.add(InetAddress.getByName("8.8.8.8")); // Google DNS as DNS2 for safety // apply the new static configuration wifiConf.getClass().getMethod("setStaticIpConfiguration", staticConf.getClass()).invoke(wifiConf, staticConf); } // apply the configuration change boolean result = wm.updateNetwork(wifiConf) != -1; //apply the setting if(result) result = wm.saveConfiguration(); //Save it if(result) wm.reassociate(); // reconnect with the new static IP } catch(Exception e) { e.printStackTrace(); } }
设置Wifi的吗?
你又不说Android的版本,4.0和5.0是不一样的,然后6.0之后是不能设置的。
我对你们公司比较服气,这么重要的功能居然让一个实习生去做,这是想转嫁责任?
(别以为我不知道你们公司想干嘛。)
发个5.0的吧