Android4.2 以太网Ethernet DHCP和静态设置实现

前提:下面涉及的内容均需要系统权限,也就是系统应用,开发非系统app则饶边。

 

以太网设置一般是进入系统原生的设置APP,进入到以太网选项进行设置的。在一些专用场合,需要定制APP,不直接调用系统的设置,那么就要自己实现以太网动态和静态的设置。

 

权限:

<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />

 

EthernetDevInfo类有以下成员:

private String dev_name;
private String ipaddr; // IP地址
private String netmask; // 子网掩码
private String gw; // 网关设置
private String dns; // DNS设置
private int mode; // 模式设置:静态或者动态
private String hwaddr; // MAC地址

 

一、获取EthernetManager实例

private EthernetManager mEthManager;

private EthernetDevInfo mDevInfo;

mEthManager = EthernetManager.getInstance();

 

二、填充mDevInfo

静态:

mDevInfo = mEthManager.getSavedConfig();
mDevInfo.setConnectMode(EthernetDevInfo.ETHERNET_CONN_MODE_MANUAL);
mDevInfo.setIpAddress("XXX");
mDevInfo.setNetMask("XXX");
mDevInfo.setDnsAddr("XXX");
mDevInfo.setGateWay("XXX");

mDevInfo.setHwaddr("XXX"); // getSavedConfig获取的mac地址为null,需要主动填充地址,否则进入系统设置会因为地址null崩溃

 

动态:

mDevInfo = mEthManager.getSavedConfig();
mDevInfo.setConnectMode(EthernetDevInfo.ETHERNET_CONN_MODE_DHCP);

mDevInfo.setHwaddr("XXX");

 

三、更新配置信息并enable ethernet service

mEthManager.updateDevInfo(mDevInfo);
mEthManager.setEnabled(true);

 

更多详情可参考:

frameworks/base/ethernet/java/android/net/ethernet/EthernetManager.java

frameworks/base/ethernet/java/android/net/ethernet/EthernetDevInfo.java

 

展开阅读全文

没有更多推荐了,返回首页