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

修改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后,在路由器上可以看到如下:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值