Android:修改连接到AP端显示的设备名
一、Android系统代码中实现设备名分配
1. \frameworks\base\services\core\java\com\android\server\ConnectivityService.java
建立连接时读取 "net.hostname" 属性值是否为空,如果为空则获取设备id,加上"android-"前缀并设置到属性:
protected ConnectivityService(Context context, INetworkManagementService netManager,
INetworkStatsService statsService, INetworkPolicyManager policyManager,
IpConnectivityLog logger) {
mHandlerThread = new HandlerThread("ConnectivityServiceThread");
mHandlerThread.start();
mHandler = new InternalHandler(mHandlerThread.getLooper());
mTrackerHandler = new NetworkStateTrackerHandler(mHandlerThread.getLooper()); // setup our unique device name
if (TextUtils.isEmpty(SystemProperties.get("net.hostname"))) {
String id = Settings.Secure.getString(context.getContentResolver(),
Settings.Secure.ANDROID_ID);
if (id != null && id.length() > 0) {
String name = new String("android-").concat(id);
SystemProperties.set("net.hostname", name);
}
}
......
}
2. \frameworks\base\services\net\java\android\net\dhcp\DhcpInformPacket.java
通过 addCommonClientTlvs() 接口获取设备ID并填入buffer:
/**
* Adds additional parameters to the INFORM packet.
*/
void finishPacket(ByteBuffer buffer) {
addTlv(buffer, DHCP_MESSAGE_TYPE, DHCP_MESSAGE_TYPE_INFORM);
addTlv(buffer, DHCP_CLIENT_IDENTIFIER, getClientId());
addCommonClientTlvs(buffer);
addTlv(buffer, DHCP_PARAMETER_LIST, mRequestedParams);
addTlvEnd(buffer);
}
调用到 \frameworks\base\services\net\java\android\net\dhcp\DhcpPacket.java 中获取 "net.hostname" 属性值,
添加到Tlv信息中(TLV是一种编码方式,由数据的类型Tag,数据的长度Length,数据的内容Value构成的一组数据报文)
protected void addCommonClientTlvs(ByteBuffer buf) {
addTlv(buf, DHCP_MAX_MESSAGE_SIZE, (short) MAX_LENGTH);
Option60 option60 = null;
if (mIface != null) {
option60 = OptionManager.getInstance().getOption60(mIface);
}
if (option60 != null && option60.getOptionSwitch() != 0
&& option60.getLogin() != null && option60.getPassword() != null){
byte[] dhcpPlusBuf = buildDhcpPlusMsg(option60.getLogin(),option60.getPassword());
addTlv(buf,DHCP_VENDOR_CLASS_ID,dhcpPlusBuf);
} else {
addTlv(buf, DHCP_VENDOR_CLASS_ID, getVendorId());
}
final String hn = getHostname();
if (!TextUtils.isEmpty(hn)) addTlv(buf, DHCP_HOST_NAME, hn);
}
getHostname() 实现:
private String getHostname() {
if (testOverrideHostname != null) return testOverrideHostname;
return SystemProperties.get("net.hostname");
}
addTlv() 实现:
/**
* Adds an optional parameter containing an array of bytes.
*/
protected static void addTlv(ByteBuffer buf, byte type, byte[] payload) {
if (payload != null) {
if (payload.length > MAX_OPTION_LEN) {
throw new IllegalArgumentException("DHCP option too long: "
+ payload.length + " vs. " + MAX_OPTION_LEN);
}
buf.put(type);
buf.put((byte) payload.length);
buf.put(payload);
}
}
编译及更新:
mmm frameworks/base/services/
adb push out/target/product/almond/system/framework/services.jar /system/framework/
adb push out/target/product/almond/system/framework/oat/arm64/services.odex /system/framework/oat/arm64/ (优化编译才有此目录)
二、通过build.prop文件配置设备名
1. 修改 /system/build.prop 最后添加,### 为自己设置的设备名:
net.hostname=###
2. 重启、重连wifi,从热点或路由器后台查看设备名即为修改后的名称。

Android:修改连接到AP端显示的设备名的更多相关文章
- Android 修改host文件的3种方法
Android修改hosts文件的方法介绍 本文介绍三种Android手机修改hosts文 件的方法,但修改hosts文件一定要谨慎:Android手机hosts文件的换行符必须是n而不是window ...
- pc端页面在移动端显示问题
1.pc端页面在移动端显示,默认视口宽度是980px(也就是body宽度是980px),可通过meta标签设置为需要的尺寸,比如页面中元素最大宽度是1220px,则如下所示 <meta name ...
- Android相机、相册获取图片显示并保存到SD卡
Android相机.相册获取图片显示并保存到SD卡 [复制链接] 电梯直达 楼主 发表于 2013-3-13 19:51:43 | 只看该作者 |只看大图 本帖最后由 happy小妖同学 ...
- 学习EChart.js(四) 移动端显示
ECharts.js 移动端显示 现在很多时候,我们是在用手机.pad等一些移动端设备来进行办公获取数据.所以我们的图表很多时候是需要用移动端设置来查看的,而我们的图表有时候因为数据的偏多,会出现遮挡 ...
- 【聊技术】在Android中实现自适应文本大小显示
本周的聊技术话题和大家说说如何在Android中实现自适应文本大小显示. 想象一下,在布局中,通常显示文本的区域大小是固定的,但是文本长度并不总是固定的.比如列表中的文章标题.界面下方的按钮文本等等. ...
- Linux下修改禅道端自定义端口号
第一种方式 一. 首先,如果我们的服务器的80端口没有开放的话,那么我们就是只能修改Apache应用服务的端口了,其实非常简单,安装完成禅道后,在任意目录下输入命令: /opt/zbox ...
- 解决Android Graphical Layout 界面效果不显示
解决Android Graphical Layout 界面效果不显示 qq463431476
- Android ListView滑动过程中图片显示重复错乱闪烁问题解决
最新内容建议直接访问原文:Android ListView滑动过程中图片显示重复错乱闪烁问题解决 主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及L ...
- android 修改系统的dialog样式
android 修改系统的dialog样式 一.觉得自定义配置文件麻烦?那就来修改系统自定义XML文件来实现修改系统dialog的样式吧. 如果是在XML中样式:首先来说下样式. 在 Style.x ...
随机推荐
- Linux 命令之 ln
ln 的作用是制作一个文件或者目录的快捷方式,让我们在使用的过程当中更加方便地使用. 下面我来简单介绍一下 ln 的基本用法. ln 的基本语法 生成一个软链 ln -s source_name li ...
- KVM虚拟化——简介
KVM 基于内核的虚拟机KVM(Kernel-Based Virtual Machine)是2007年问世的开源虚拟化解决方案.KVM需要两个条件: ①硬件支持全虚拟化 ②操作系统为Linux KVM ...
- Linux命令——ls
15 Interview Questions on Linux “ls” Command – Part 1 10 Useful ‘ls’ Command Interview Questions – P ...
- Python Django开发遇到的坑(版本不匹配)
这个问题 进入django 后台, 添加,修改都不可以,只有删除可以,那么百分之百是这个问题 对照一下,是你的django 版本低了还是 python版本高了,对照的话就没问题了 这个坑,弄了两天啊! ...
- linux----centos7 yum安装lnmp+zabbix
安装yum utils工具包,若不安装则会找不到命令yum-config-manageryum -y install yum-utils 启用yum仓库yum-config-manager --ena ...
- MySQL服务器
---恢复内容开始--- mysql是基于C/S端的服务器软件 mysql服务端 -server端开启 -解析指令 -对文件夹.文件.数据的增删改查 mysql客户端 -连接S段 -发送指令(sql语 ...
- 0018SpringBoot连接docker中的mysql并使用druid数据源
由于druid数据源自带监控功能,所以引用druid数据源 1.centos7中安装并启动docker 2.docker安装并启动mysql 3.pom.xml中引入druid依赖 4.applica ...
- Soda Theme sublime 自定义编辑器主题
1.Soda ThemeSublime Text 3中较为常用的一款自定义编辑器主题,用过的人都说好.Soda Theme包含代码着色.标签.图标,拥有light和dark两种颜色主题便于用户在不同时 ...
- sql server 很好的基础练习 <学生表-老师表-课程表-选课表>
表结构 --学生表tblStudent(编号StuId.姓名StuName.年龄StuAge.性别StuSex) --课程表tblCourse(课程编号CourseId.课程名称CourseName. ...
- am335x system upgrade rootfs custom service using systemd script(十七)
1 Scope of Document systemd 是一个 Linux 系统基础组件的集合,提供了一个系统和服务管理器,运行为 PID 1 并负责启动其它程序.功能包括:支持并行化任务: ...