一区二区三区电影_国产伦精品一区二区三区视频免费_亚洲欧美国产精品va在线观看_国产精品一二三四

聯(lián)系我們 - 廣告服務(wù) - 聯(lián)系電話:
您的當(dāng)前位置: > 關(guān)注 > > 正文

如何在代碼中設(shè)置WIFI靜態(tài)IP?Android設(shè)置WIFI靜態(tài)IP

來源:CSDN 時(shí)間:2023-04-19 08:51:02


(相關(guān)資料圖)

想要在代碼中實(shí)現(xiàn)設(shè)置WIFI靜態(tài)IP需要有系統(tǒng)權(quán)限,要在manifest文件添加android:sharedUserId=“android.uid.system”,還要有系統(tǒng)簽名。 設(shè)置WIFI靜態(tài)IP和之前以太網(wǎng)的類似,都是要構(gòu)造StaticIpConfiguration對(duì)象,以及IpConfiguration.IpAssignment.STATIC就代表設(shè)置為靜態(tài)IP,也可以設(shè)置DHCP(自動(dòng)獲取),不過WifiConfiguration可以直接通過WifiManager獲取到,比設(shè)置以太網(wǎng)的要簡(jiǎn)單一些,不用反射來獲取對(duì)象。

將IP,NETMASK,GATEWAY和DNS設(shè)置進(jìn)去,構(gòu)造StaticIpConfiguration對(duì)象,下邊是代碼:

try {Inet4Address inetAddr = getIPv4Address(STATIC_IP);    int prefixLength = NetUtils.maskStr2InetMask(STATIC_NETMASK);    InetAddress gatewayAddr = getIPv4Address(STATIC_GATEWAY);    InetAddress dnsAddr = getIPv4Address(STATIC_DNS1);    Class[] cl = new Class[]{InetAddress.class, int.class};    Constructor cons = null;    Class clazz = Class.forName("android.net.LinkAddress");    //取得所有構(gòu)造函數(shù)    try {cons = clazz.getConstructor(cl);    } catch (NoSuchMethodException e) {e.printStackTrace();    }    if (cons == null) {return;    }    //給傳入?yún)?shù)賦初值    Object[] x = {inetAddr, prefixLength};    //構(gòu)造StaticIpConfiguration對(duì)象    Class staticIpConfigurationCls = Class.forName("android.net.StaticIpConfiguration");    //實(shí)例化StaticIpConfiguration    Object staticIpConfiguration = null;    staticIpConfiguration = staticIpConfigurationCls.newInstance();    Field ipAddress = staticIpConfigurationCls.getField("ipAddress");    Field gateway = staticIpConfigurationCls.getField("gateway");    Field dnsServers = staticIpConfigurationCls.getField("dnsServers");    //設(shè)置ipAddress    ipAddress.set(staticIpConfiguration, (LinkAddress) cons.newInstance(x));    //設(shè)置網(wǎng)關(guān)    gateway.set(staticIpConfiguration, gatewayAddr);    //設(shè)置dns    ArrayListdnsList = (ArrayList) dnsServers.get(staticIpConfiguration);    dnsList.add(dnsAddr);    if (!STATIC_DNS2.isEmpty()) {dnsList.add(getIPv4Address(STATIC_DNS2));    }    WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);    WifiConfiguration wifiConfig = null;    WifiInfo connectionInfo = wifiManager.getConnectionInfo();  //得到連接的wifi網(wǎng)絡(luò)    @SuppressLint("MissingPermission")    ListconfiguredNetworks = wifiManager.getConfiguredNetworks();    for (WifiConfiguration conf : configuredNetworks) {if (conf.networkId == connectionInfo.getNetworkId()) {wifiConfig = conf;            break;        }    }    @SuppressLint("PrivateApi") Class ipAssignmentCls = Class.forName("android.net.IpConfiguration$IpAssignment");    Object ipAssignment = Enum.valueOf(ipAssignmentCls, "STATIC");    Method setIpAssignmentMethod = wifiConfig.getClass().getDeclaredMethod("setIpAssignment", ipAssignmentCls);    setIpAssignmentMethod.invoke(wifiConfig, ipAssignment);    Method setStaticIpConfigurationMethod = wifiConfig.getClass().getDeclaredMethod("setStaticIpConfiguration", staticIpConfiguration.getClass());    //設(shè)置靜態(tài)IP,將StaticIpConfiguration設(shè)置給WifiConfiguration    setStaticIpConfigurationMethod.invoke(wifiConfig, staticIpConfiguration);    //WifiConfiguration重新添加到WifiManager     int netId = wifiManager.addNetwork(wifiConfig);    wifiManager.disableNetwork(netId);    boolean flag = wifiManager.enableNetwork(netId, true);} catch (NoSuchFieldException | IllegalAccessException | InstantiationException | InvocationTargetException | ClassNotFoundException | NoSuchMethodException e) {e.printStackTrace();}

通過WifiConfiguration的setStaticIpConfiguration方法將StaticIpConfiguration對(duì)象設(shè)置進(jìn)去,通過setIpAssignment,將IpAssignment設(shè)置進(jìn)去,值設(shè)為STATIC,最后根據(jù)netId 重啟這個(gè)網(wǎng)絡(luò),即可將靜態(tài)IP設(shè)置成功。

責(zé)任編輯:

標(biāo)簽:

相關(guān)推薦:

精彩放送:

新聞聚焦
Top 主站蜘蛛池模板: 白银市| 朝阳市| 榆林市| 宜春市| 夏邑县| 无锡市| 临沂市| 南阳市| 当雄县| 南通市| 凤阳县| 襄城县| 安福县| 定陶县| 巢湖市| 昌乐县| 安义县| 榆社县| 金平| 瑞丽市| 乌拉特后旗| 开阳县| 三河市| 长白| 华坪县| 望都县| 松滋市| 民县| 信阳市| 康马县| 澳门| 房产| 延长县| 宁德市| 县级市| 申扎县| 察隅县| 吉水县| 哈尔滨市| 宝丰县| 海兴县|