Android6.0修改以太网IP
苦心钻研6天以及各路朋友的帮助下终于有了成果,安卓6.0系统重启后也可以修改有关有线网的IP,网关地址等。
InetAddress ipaddr=NetworkUtils.numericToInetAddress(mEthIpAddress);
DhcpInfo dhcpInfo = new DhcpInfo();
dhcpInfo.ipAddress = inetAddressToInt(ipaddr);
Inet4Address inetAddr= Utils.getIPv4Address(mEthIpAddress);
int prefixLength=Utils.maskStr2InetMask(mEthNetmask);
InetAddress gatewayAddr = Utils.getIPv4Address(mEthGateway);
InetAddress dnsAddr = Utils.getIPv4Address(mEthdns1);
if (inetAddr.getAddress().toString().isEmpty() || prefixLength ==0 || gatewayAddr.toString().isEmpty()
|| dnsAddr.toString().isEmpty()) {
return;
}
Class<?> clazz = null;
try {
clazz = Class.forName("android.net.LinkAddress");
} catch (Exception e) {
// TODO: handle exception
}
Class[] cl = new Class[]{InetAddress.class, int.class};
Constructor cons = null;
try {
cons = clazz.getConstructor(cl);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
Object[] x = {inetAddr, prefixLength};
StaticIpConfiguration mStaticIpConfiguration = new StaticIpConfiguration();
String dnsStr2 = mEthdns2;
//mStaticIpConfiguration.ipAddress = new LinkAddress(inetAddr, prefixLength);
try {
mStaticIpConfiguration.ipAddress = (LinkAddress) cons.newInstance(x);
Log.d("232323", "chanson 1111111");
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
mStaticIpConfiguration.gateway=gatewayAddr;
mStaticIpConfiguration.dnsServers.add(dnsAddr);
if (!dnsStr2.isEmpty()) {
mStaticIpConfiguration.dnsServers.add(Utils.getIPv4Address(dnsStr2));
}
Log.d("2312321", "chanson mStaticIpConfiguration ====" + mStaticIpConfiguration);
IpConfiguration mIpConfiguration = new IpConfiguration(IpConfiguration.IpAssignment.STATIC,
mEthManager.setConfiguration(mIpConfiguration);
try {
return (Inet4Address) NetworkUtils.numericToInetAddress(text);
} catch (IllegalArgumentException|ClassCastException e) {
return null;
}
}
public static int maskStr2InetMask(String maskStr) {
StringBuffer sb ;
String str;
int inetmask = 0;
int count = 0;
/*
* check the subMask format
*/
Pattern pattern = Pattern.compile("(^((\\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 (pattern.matcher(maskStr).matches() == false) {
Log.e("33333","subMask is error");
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;
}
(1)在桌面新建文件夹,放入以下文件:
Android6.0修改以太网IP相关推荐
- Android 如何修改以太网IP
这个问题可以说困扰了我很久,百度上当然有大神做出来,但是呢基本都很难复刻,这是一个很不常规的功能.我认为做普通APP是不需要的,只有在做一些嵌入式设备,比如什么广告机,售货机,取票机这类的设备的时候才 ...
- linux 7.0修改网卡ip,CentOS7修改网卡为静态IP
CentOS7修改网卡DHCP获取IP为静态IP 1.修改网卡配置 [root@centos7 ~]#cd /etc/sysconfig/network-scripts/ [root@centos7 ...
- Andorid 6.0 设置以太网ip,网关
真机需要root,下面在adb演示过程: 1.移动设备使用数据线连接PC,PC在cmd中获取root权限并进入adb C:\Users\Administrator>adb root C:\Use ...
- android6.0修改默认dns
我们的手机做了个多流功能,该功能可以实现上google,在这个过程中,创建了个虚拟网卡tun0,如下图: 有了这个虚拟网卡,然后我们需要将默认DNS改为tun的DNS.修改如下: 1.Connecti ...
- C# 修改本地以太网ip地址
因为某项需求,要修改以太网的ip地址,研究了一段时间,因不太懂网络的知识,只实现了最基本的修改以太网ip的功能.如果有错误,欢迎指出 等价于在这里修改: 实现代码: //设置ip地址private v ...
- Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮...
Android6.0 源码修改之 仿IOS添加全屏可拖拽浮窗返回按钮 前言 之前写过屏蔽系统导航栏功能的文章,具体可看Android6.0 源码修改之屏蔽导航栏虚拟按键(Home和RecentAPP) ...
- android launcher 字体大小,Android6.0 Launcher3 修改app字体大小
在原生的Android6.0中,在修改了系统字体大小后,Launcher 3上的app字体大小没有改变,下面方法可以解决:--- a/packages/apps/Launcher3/src/com/a ...
- android6.0 framwork修改
基于android6.0.7.01.20 默认使用Launcher2,修改Launcher2 packages/apps/Launcher3/src/com/android/launcher3/Lau ...
- Android6.0 usb默认MTP模式的修改方法
Android6.0 usb默认MTP模式的修改方法 在6.0以前的系统 只需要修改默认的 persist.sys.usb.config 的值就可以了, 但是6.0,无论你怎能修改persist.sy ...
最新文章
- (C#)AJAX post方式传值
- 深度学习与计算机视觉系列(4)_最优化与随机梯度下降\数据预处理,正则化与损失函数
- WPF 4 DataGrid 控件(基本功能篇)
- Construct Binary Tree from Preorder and Inorder Traversal
- sealos kubernetes(k8s)高可用安装教程
- scala case class 继承_数字硬件系统设计之一:Scala快速入门(2)
- python:第一个简单爬虫程序
- php 同时导出两个文件_使用orangehill/iseed自动反向生成数据填充文件
- Linux的铜墙铁壁:防火墙之iptables
- PCL综合开发(一):Qt 5.14 + PCL 1.8.1 +VS 2017环境配置
- 作文 —— 景物描写
- datagrid 重载本地数据_jQuery easyui datagrid重新加载数据
- javascript时钟代码 DEMO-002
- Typora入门手册
- 蓝桥杯练习题之圆的面积
- 南阳oj 题目10 skiing
- MySQL单表数据量过大的处理方式经验
- C++模拟扑克过五关
- 【论文笔记】A Survey on Federated Learning: The Journey From Centralized to Distributed On-Site...(综述)
- 萌新记录自己刷过的题
热门文章
- 快速搭建BI商业报表平台
- UDP搜索IP与端口
- 第七届开源操作系统年度技术会议(OS2ATC)盛大开幕,从编译器到软件定义卫星精彩议题大曝光
- Extrinsic Calibration of a Camera and Laser Range Finder (improves camera calibration)阅读笔记
- 关于branch XYZ is published (but not merged) and is now N commits behind错误的一点分析
- 基于 HTML+CSS+JS 的纸牌记忆游戏
- Tech Talk · 云技术有话聊 | 关键基础部件如何保障高可靠?
- 有很多事情要做,究竟怎么确定执行顺序?
- 最近做到一道好题,特来和大家分享一下。
- SVN各种错误提示产生原因及处理方法大全