有些做Android主板的公司 或者 软硬结合的公司 可能会需要 修改 Android主板的 IP,使用Android 主板接入 以太网, 大家都知道 像一些移动设备 是不支持 我们的以太网(有线网络) ,但是 肯定 有特定的需求 使得 我们的Android 主板 要接入 以太网, 那么 这需要 驱动 和 一些 硬件的支持。 为什么用Android 主板? 很简单 现在 Android 主板 使用很广泛 是因为 价格 低廉,又因为 Android 是个开源的系统 。 所以 有源码的情况下 结合硬件 我们能做很多 事情,只有你想不到,没有做不到....好了 不扯了 进入正题 本章内容说的 是 到底 怎么去 修改 Android DHCP的 ip 网关 子网掩码呢,可以使用 AILD (Android Interface definition language) ,它是一种android内部进程通信接口的描述语言,通过它我们可以定义进程间的通信接口。

用到EthernetManager 和EthernetDevInfo

先分析下 EthernetDevInfo


public class EthernetDevInfo implements Parcelable {
private String dev_name;
private String ipaddr;
private String netmask;
private String route;
private String dns;
private String mode;
public static final String ETH_CONN_MODE_DHCP= "dhcp";
public static final String ETH_CONN_MODE_MANUAL = "manual";

public EthernetDevInfo () {
dev_name = null;
ipaddr = null;
dns = null;
route = null;
netmask = null;
mode = ETH_CONN_MODE_DHCP;
}

public static final Creator<EthernetDevInfo> CREATOR =
new Creator<EthernetDevInfo>() {
public EthernetDevInfo createFromParcel(Parcel in) {
EthernetDevInfo info = new EthernetDevInfo();
info.setIfName(in.readString());
info.setIpAddress(in.readString());
info.setNetMask(in.readString());
info.setRouteAddr(in.readString());
info.setDnsAddr(in.readString());
info.setConnectMode(in.readString());
return info;
}

public EthernetDevInfo[] newArray(int size) {
return new EthernetDevInfo[size];
}
};

................此处省略 get set方法

}

可以看到EthernetDevInfo 实现Parcelable

2.实现Parcelable就是为了进行序列化,那么,为什么要序列化?

1)永久性保存对象,保存对象的字节序列到本地文件中;

2)通过序列化对象在网络中传递对象;

3)通过序列化在进程间传递对象。

这里用到 第三条

再看这个 类EthernetManager

public class EthernetManager {

private INetworkManagementService mNMService; //需要调用的服务

public EthernetManager(Context paramContext) {
this.mContext = paramContext;
this.mNMService = INetworkManagementService.Stub
.asInterface(ServiceManager.getService("network_management"));

...........初始化一些对象 环境

}

public void setInterfaceUp(String paramString) { // 打开 服务
try {
this.mNMService.setInterfaceUp(paramString);
return;
} catch (RemoteException localRemoteException) {
}
}

public void setInterfaceDown(String paramString) { // 关闭 服务
try {
this.mNMService.setInterfaceDown(paramString);
return;
} catch (RemoteException localRemoteException) {
}
}


public void setMode(String paramString) { //设置模式 DHCP 还是 m
try {
this.mContext.getContentResolver();
if (this.DevName != null)
SystemProperties.set("net." + this.DevName[0] + ".mode",paramString);
return;
} finally {
}
}

public void updateDevInfo(EthernetDevInfo paramEthernetDevInfo) { //修改数据 ip dns等等

// EthernetDevInfo 上面 序列化 的类

try {
SystemProperties.set("net.dns1", paramEthernetDevInfo.getDnsAddr());
SystemProperties.set("net." + paramEthernetDevInfo.getIfName()
+ ".dns1", paramEthernetDevInfo.getDnsAddr());
SystemProperties.set("net." + paramEthernetDevInfo.getIfName()
+ ".dns2", "0.0.0.0");
SystemProperties.set("net." + paramEthernetDevInfo.getIfName()
+ ".config", "1");
SystemProperties.set("net." + paramEthernetDevInfo.getIfName()
+ ".mode", paramEthernetDevInfo.getConnectMode());
SystemProperties.set("net." + paramEthernetDevInfo.getIfName()
+ ".ip", paramEthernetDevInfo.getIpAddress());
SystemProperties.set("net." + paramEthernetDevInfo.getIfName()
+ ".gw", paramEthernetDevInfo.getRouteAddr());
return;
} finally {
}
}

}

差不多 就这样 还有一些 方法 没写出来(保密原因),主要 还是给有需要的朋友 提供思路 。

这个 可能需要 系统权限 将他 烧录的时候 至为系统方法 使其可以获得权限

总结 : 写博客 目前写的不是很多, 也可能有的朋友 不懂 。或者 我的语言组织能力 有限。表达不清楚

但是 我会努力的。兄弟们的支持 是我最大的动力










更多相关文章

  1. android studio 55线程更新UI handler
  2. android项目案例3- 基于Android(安卓)studio的android的fragment
  3. SpriteBuilder 如何移植到Android
  4. Android(安卓)基础知识总结
  5. Android跨进程通信IPC之4——AndroidIPC基础1
  6. Android跨进程通信IPC之7——Binder相关结构体简介
  7. Android跨进程通信IPC之10——Binder之Framework层Java篇
  8. Android跨进程通信IPC之4——AndroidIPC基础2
  9. Android(安卓)热修复方案Tinker(四) 资源补丁加载

随机推荐

  1. 实例演示:盒模型常用属性、媒体查询以及em
  2. 实例演示classList对象和blur事件
  3. head与body中常用标签
  4. 1.markdown语法及部分html标签
  5. 怎么P身份證改头像换头像
  6. PHP实现用户登录、注册、退出
  7. PHP数据库的CURD操作
  8. Android事件总线之EventBus3.0基本使用
  9. Android使用第三方字体
  10. 《Android(安卓)Dev Guide》系列教程6:And