如何在代码中设置WIFI静态IP?设置WIFI静态IP流程:当前热议
(相关资料图)
想要在代码中实现设置WIFI静态IP需要有系统权限,要在manifest文件添加android:sharedUserId=“android.uid.system”,还要有系统签名。 设置WIFI静态IP和之前以太网的类似,都是要构造StaticIpConfiguration对象,以及IpConfiguration.IpAssignment.STATIC就代表设置为静态IP,也可以设置DHCP(自动获取),不过WifiConfiguration可以直接通过WifiManager获取到,比设置以太网的要简单一些,不用反射来获取对象。
将IP,NETMASK,GATEWAY和DNS设置进去,构造StaticIpConfiguration对象,下边是代码:
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"); //取得所有构造函数 try {cons = clazz.getConstructor(cl); } catch (NoSuchMethodException e) {e.printStackTrace(); } if (cons == null) {return; } //给传入参数赋初值 Object[] x = {inetAddr, prefixLength}; //构造StaticIpConfiguration对象 Class staticIpConfigurationCls = Class.forName("android.net.StaticIpConfiguration"); //实例化StaticIpConfiguration Object staticIpConfiguration = null; staticIpConfiguration = staticIpConfigurationCls.newInstance(); Field ipAddress = staticIpConfigurationCls.getField("ipAddress"); Field gateway = staticIpConfigurationCls.getField("gateway"); Field dnsServers = staticIpConfigurationCls.getField("dnsServers"); //设置ipAddress ipAddress.set(staticIpConfiguration, (LinkAddress) cons.newInstance(x)); //设置网关 gateway.set(staticIpConfiguration, gatewayAddr); //设置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网络 @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()); //设置静态IP,将StaticIpConfiguration设置给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对象设置进去,通过setIpAssignment,将IpAssignment设置进去,值设为STATIC,最后根据netId 重启这个网络,即可将静态IP设置成功。
标签:
相关推荐:
最新新闻:
- 【热闻】如何在Windows上清除/刷新DNS缓存?全平台详细教程
- 16比9尺寸是多少厘米?液晶显示器16比9计算公式 焦点短讯
- 如何在代码中设置WIFI静态IP?设置WIFI静态IP流程:当前热议
- 天天微速讯:如何定期清洗油烟净化器?详细步骤来了
- 头条:支付宝和微信免费提现有什么不同?支付宝和微信免费提现的区别
- 酷派大神9976A怎么刷机?酷派大神9976刷机教程:独家
- 怎么在电脑上玩口袋妖怪新世代手游?口袋妖怪新世代电脑版玩法攻略|环球今日讯
- 如何操作现货原油期货?操作流程步骤
- nmap扫描工具怎么使用?nmap扫描工具简单使用教程
- 《哥斯拉大战金刚2:新帝国》前导预告发布
- 类银河战士恶魔城《动物井》还将登陆Switch
- 今日热文:特斯拉Model3价格跌破4万美元
- 又一款国民神车来了 定价仅为5.39万|环球讯息
- 今日热文:生态才是关键 运动的终点在朋友圈
- iPhone14 128GB只要4919元
- 环球速递!董宇辉自曝发一条广告给1000万:这钱不能挣
- 《伊苏10》公布新角色及三种特殊能力 环球资讯
- 全球观天下!NVIDIA显卡降价开启:RTX 4090居然破发
- 开发者称《浩劫前夕》发行前将举行Beta测试
- 【世界新视野】钞能力真香?宝马高管大呼我们的家在中国
- 18万买特斯拉Model 3?官方紧急辟谣想得美
- 小米11青春版8+256G只要1319元 世界最新
- 天天看热讯:小米13 Ultra首销破10万?秘密就是价格定低了
- 新增武器技能《神之亵渎2》2023年夏季全平台发售
- 罗素兄弟《惊天营救3》有望立项 欲打造系列宇宙
- 第三方展示蜘蛛侠主题定制rtx4070 红蓝配色经典logo
- 观热点:《新无主之地:传说》D加密被移除 历时约半年
- 胆小慎入!《潜伏5:红门》首曝港版中字预告 世界新要闻
- 环球观点:《星球大战绝地:幸存者》PS5版超147GB
- 硬盘减负难!曝《星战绝地幸存者》PS5版大小为147G
- PS三档会员新福利:试玩2小时《迪士尼无限飞车》_讯息
- 《红霞岛》新角色预告:武器发明家 花式杀僵尸-快讯
- 外媒:游戏中黑人女主比例正在上升 但仍有增长空间
- 买来收藏!近半数玩家选择《王国之泪》实体版
- 初心如磐,奋楫笃行,共赢数字化未来
- 移动游戏的魅力壹号本PC掌机与你相约ZOL“武汉潮好玩”嘉年华_当前看点
- 当前热议!《魔戒:咕噜》开发商为付费精灵语DLC辩护:只有真爱粉才懂
- 精选!新《仙剑奇侠传》电视剧过审 杨雨潼何与等主演
- 焦点快报!开发者爆料暴雪人才流失严重:高层无视意见独断专行
- 国家一级演员宗利群去世 生前曾扮演六十多次彭德怀|独家焦点
- 天天速读:《地平线:西之绝境》埃洛伊性取向确定:是女同性恋
- 恐怖新游《10 Dead Doves》开启众筹 生化寂静岭风格
- 系列销售总监询问玩家:你希望《消逝的光芒3》主角是什么职业?-天天热消息
- 世界即时:华硕游戏掌机ROG Ally配置曝光 锐龙7 7840U
- 王轶梧:遇见春天
- SteamDeck拆机前一定要取出SD卡!否则会直接折断
- 《生化4RE》偷盘哥后 又出现模仿者偷盘姐!|全球时讯
- “强国复兴有我”主题志愿服务活动在川开展_世界快资讯
- 黄牛手里的PS5价格暴跌!比官方的还便宜
- iPhone 15接口处曝光 竟然还是Lightning?
- 环球今亮点!2023 Q1全球智能手机市场排行出炉:三星夺冠、小米成国产第一
- 颜值也是战斗力:EVA联名款ROG电竞路由不可错过
- 上海车展:KEDE克蒂汽车携首发车型重磅亮相:天天快看
- 荣耀MagicBook 14 2023笔记本今晚开售:13代酷睿、首发4999元|天天即时
- 随矿潮结束 英特尔宣布停产比特币挖矿芯片_最新资讯
- 小米13 Ultra被抢购一空!雷军:备货非常困难
- 环球快报:《铁甲小宝》重制蟑螂恶霸登场!黄蓝配色略显黯淡
- 色彩静物如何深入塑造教学写生
- PSP超级机器人大MX图文攻略_psp机器人大战mx主角超级系和真实系有什么区别?哪个好
- 高端超龙散热加持!微星发布RTX 3060 Ti SUPER 3X_当前观点
- 选购不指北:老房改造可以购买集成灶吗?
- 去往中国最美的8个原始森林_天天快消息
- 当前热讯:三星智能戒指Galaxy Ring曝光,健康追踪精度比手表更准
- 仅109元,480GB 铨兴SATA3.0固态硬盘 全球热推荐
- 百亿补贴来了,RTX 3060Ti只要2899元
- 存款争夺战,实在太诱人了!:焦点热文
- 这么烂?《海王2》已举行七次试映评分都翻车:天天精选
- WPS AI正式公布!可帮助改写、润色文章 全球观点
- 手工耿自制羊驼烤肠机 联动《合金弹头:觉醒》_天天看热讯
- 广汽埃安力争今年实现IPO
- 由世纪互联运营的Microsoft Teams携创新功能正式发布,夯实“企业数字中枢”-世界热门
- 集成灶品牌帅丰电器【善战】终端营销全国巡回省级培训会长沙站顺利举行!
- 环球精选!机器人加班也会“猝死”,连续工作20小时倒地不起!
- 集成灶十大品牌,谈谈集成灶到底是神器还是智商税?
- 天玑9200+现身安兔兔数据库,超136W分性能稳占安卓第一