Android11修改连接WiFi后AP端显示的设备名

news2024/12/25 23:48:02

修改build.prop文件

1.修改 /system/build.prop 最后添加,xxx 为自己设置的设备名:

net.hostname=xxx
2. 重启、重连wifi,从热点或路由器后台查看设备名即为修改后的名称

代码里动态配置

暴力手段:grep -rn “net.hostname” *
可以看到/packages/modules/NetworkStack / src/android/net/dhcp/DhcpPacket.java 类里

    @VisibleForTesting
    public String getHostname() {
        if (mHostName == null
                && !ShimUtils.isReleaseOrDevelopmentApiAbove(Build.VERSION_CODES.Q)) {
            return SystemProperties.get("net.hostname");
        }
        return mHostName;
    }

打印日志可知,mHostName为null,并且ShimUtils.isReleaseOrDevelopmentApiAbove(Build.VERSION_CODES.Q)为true,所以if里面为false,走了return mHostName;所以AP端没有收到这个值,路由器页面显示设备,显示匿名主机。
在这里插入图片描述
既然搞清楚这里了,那就很简单了,第一:让if里走进去,return SystemProperties.get(“net.hostname”);
第二:找个合适的位置,合适的时机set一下net.hostname,这不就完事了。
由于我们需求显示的是设备名加上SN号后四位,这里没有权限读取SN,还得处理Selinux权限,所以换个地方。

//frameworks/base / services/core/java/com/android/server/ConnectivityService.java 
//构造里添加了下面一个方法
   private void updateApName() {
        String apName = SystemProperties.get("net.hostname");
        if (apName == null || apName.equals("")) {
        String deviceSn = SystemProperties.get("ro.serialno");
        if (deviceSn != null && !deviceSn.equals("")) {
            if (deviceSn.length() > 4) {
                apName = "XXXXXX_" + deviceSn.substring(deviceSn.length() - 4);
            } else {
                apName = "XXXXXX_" + deviceSn;
            }

        } else {
            apName = "XXXXX";
        }

       SystemProperties.set("net.hostname", apName);
       }
    }

@VisibleForTesting
    protected ConnectivityService(Context context, INetworkManagementService netManager,
            INetworkStatsService statsService, INetworkPolicyManager policyManager,
            IDnsResolver dnsresolver, IpConnectivityLog logger, INetd netd, Dependencies deps) {
        if (DBG) log("ConnectivityService starting up");
        //*************************************************
         updateApName();
       //*************************************************
}

编译一下,验证,连接上WiFi后,在路由器上可以看到如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1181561.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

matlab中的iddata函数的初步理解和使用程序举例

matlab中的iddata函数的初步理解和程序举例 一、iddata函数功能 iddata函数常用于系统识别分析领域数据分析方面。该函数在时域或频域中,将用于系统识别的输入输出数据及其特性数据的生成对象数据类型。即,可以使用iddata函数封装要标识的系统的输入和…

【Transformer从零开始代码实现】(一)输入部件:embedding+positionalEncoding

Transformer总架构图 输入相关组件 输入部分: 源文本嵌入层位置编码器目标文本嵌入层位置编码器 (1)Embedding 首先,需要对输入的内容进行向量化。 1)先导示例 nn.Embedding示例: # 10代表嵌入的数…

即插即用篇 | YOLOv8 引入反向残差注意力模块 iRMB | 《ICCV 2023 最新论文》

论文地址:https://arxiv.org/abs/2301.01146 代码地址:https://github.com/zhangzjn/EMO 本论文着重于开发现代、高效、轻量级的模型,用于进行密集预测,同时在参数、FLOPs和性能之间进行权衡。倒置残差块(IRB)作为轻量级CNN的基础设施,但在基于注意力的研究中尚未找到对…

目标检测中的评价指标

目标检测中的评价指标 将检测目标分为正样本和负样本。 真阳性(true positives , TP) : 正样本被正确识别为正样本。 假阳性(false positives, FP): 负样本被错误识别为正样本。 假阴性(false negatives, FN&#…

技术分享 | app自动化测试(Android)-- 参数化用例

参数化是自动化测试的一种常用技巧,可以将测试代码中的某些输入使用参数来代替。以百度搜索功能为例,每次测试搜索场景,都需要测试不同的搜索内容,在这个过程里面,除了数据在变化,测试步骤都是重复的&#…

Java附件和base64相互转换

1 文件转base64 声明:我用的是Hutool的Base64下的api package cn.hutool.core.codec; 首先找一张图片 很简单,直接使用Base64的encode方法就可以拿到文件的base64码: File file new File("D:\\Tools\\Images\\北极熊.jpg");String…

软件测试面试题汇总,(测试技术+人力资源+进阶规划)含2023面试题和答案总结

什么是兼容性测试?单元测试的策略有哪些?当开发人员说不是BUG时,你如何应付?等,尾部有最新BAT的Python高级自动化工程师面试题目和答案福利,想要的就快来领走吧!(领取方式见文末&…

【机器学习3】有监督学习经典分类算法

1 支持向量机 在现实世界的机器学习领域, SVM涵盖了各个方面的知识, 也是面试题目中常见的基础模型。 SVM的分类结果仅依赖于支持向量,对于任意线性可分的两组点,它 们在SVM分类的超平面上的投影都是线性不可分的。 2逻辑回归 …

安装 MinGW

实际上是将 GCC(C语言编译器) 移植到了 Windows 平台下。 1、网上下载 下载安装器 mingw-get-setup.exe,路径https://osdn.net/projects/mingw/ 2、打开点击install 3、选择路径continue 4、文件加载完成之后选择continue 5、勾选这两个 6…

数据结构与算法之美学习笔记:17 | 跳表:为什么Redis一定要用跳表来实现有序集合?

目录 前言如何理解“跳表”?用跳表查询到底有多快?跳表是不是很浪费内存?高效的动态插入和删除跳表索引动态更新解答开篇内容小结 前言 本节课程思维导图: 二分查找底层依赖的是数组随机访问的特性,所以只能用数组来实…

润色论文Prompt

你好,我现在开始写论文了,我希望你可以扮演帮我润色论文的角色我写的论文是关于xxxxx领域的xxxxx,我希望你能帮我检查段落中语句的逻辑、语法和拼写等问题我希望你能帮我检查以下段落中语句的逻辑、语法和拼写等问题同时提供润色版本以符合学…

freeswich学习

写在前面 因为所在部分主要负责公司客服业务,需要了解freeswich相关内容,所以这里将学习内容记录下。 1:安装freesswich freeswich是一个实现了软交换协议的开源软件,可以对对接运营上的通话线路,实现拨打电话。 安…

编程未来规划笔记

编程思考 Python 自动化办公、深度学习、自然语言处理(调用各种库) Html Css 写网页 学习不要怕忘 为什么学的快、忘得快 Google、写代码、放文档 高度提炼 学什么;存在的意义是什么 更好的拓展性;可维护性 实践 原理 顶层设计…

建材行业微信小程序制作全攻略

随着移动互联网的发展,微信小程序成为各行各业推广和服务的新方式。对于建材行业来说,制作一个微信小程序商城能够提供更方便快捷的购买途径,提升用户体验。下面将为大家介绍建材行业微信小程序制作的全攻略。 第一步:注册登录账号…

人工智能一种现代的方法 第四章 非经典搜索 上(局部搜索)

文章目录 人工智能一种现代的方法 第四章 非经典搜索 上前言4.1 局部搜索4.1.1 爬山法4.1.2 爬山法变形4.1.3模拟退火搜索4.1.4 局部束搜索4.1.5 遗传算法 4.2 连续空间的局部搜索4.2.1 梯度下降4.2.2 约束优化 小结 人工智能一种现代的方法 第四章 非经典搜索 上 前言 在第三…

ASUS华硕灵耀X2 Duo UX481FA(FL,FZ)_UX4000F工厂模式原装出厂Windows10系统

下载链接:https://pan.baidu.com/s/1sRHKBOyc3zu1v0qw4dSASA?pwd7nb0 提取码:7nb0 带有ASUS RECOVERY恢复功能、自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、MyASUS华硕电脑管家等预装程序所需要工具:16G或以上…

2023 年最佳 Android 数据恢复软件工具

Android 数据恢复软件将使您能够从 Android 智能手机中检索所有已删除的文件。您需要此类软件的原因是由于不同情况下会丢失数据。例如,病毒攻击会导致数据损坏和文件丢失。 Android 数据恢复软件工具清单 以下是十个最佳 Android 数据恢复软件工具,用于…

有哪些你直呼好用的科研效率神器?

今天来分享几款科研免费小工具,帮你读懂外刊、追踪文献、搞定翻译、解除限制……甚至轻松制作PPT。一身好装备,提高科研效率。 一、 浏览器插件 1.1 easyScholar 一款助力科研的浏览器扩展 一款助力科研的浏览器扩展 - easyScholar | 显示期刊等级\SC…

从0到1的Springcloud Alibaba项目,一篇入门!!!

1、新建项目 我们用maven管理项目 第一步:选择maven 第二步:项目命名,项目路径 第三步:进入项目,把src文件夹删掉(不删也没事,主要是用不到这个文件夹) 2、引入项目依赖 在父项目…

matlab 读写ENVI标准数据

本博客主要讲解如何读、生成ENVI标准格式的数据。主要分为四部分:读取ENVI头文件、读取ENVI数据、写入ENVI头文件、生成ENVI标准数据,最后附加讲解了本人写的生成hdr文本文件代码。此外,文中还具体介绍写代码的一些思路。 一、读取ENVI头文件…