当前位置: 首页 > news >正文

[RK3576][Android14] Android->添加以太网MAC地址选项

测试平台
Platform: RK3576
OS: Android14

需求:

        客户反馈:设置->网络和互联网->以太网 中没有MAC地址功能选项

解决方法:
代码路径:packages/apps/Settings

diff --git a/src/com/android/settings/ethernet/EthernetSettings.java b/src/com/android/settings/ethernet/EthernetSettings.java
index f2dfc1f1db..91a0f76443 100644
--- a/src/com/android/settings/ethernet/EthernetSettings.java
+++ b/src/com/android/settings/ethernet/EthernetSettings.java
@@ -66,6 +66,9 @@ import android.widget.Toast;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.ethernet.EthernetStaticIpDialog;
import com.android.settings.utils.ReflectUtils;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;

public class EthernetSettings extends SettingsPreferenceFragment implements
Preference.OnPreferenceChangeListener, EthernetStaticIpDialog.OnStaticIpDialogClickListener {
@@ -276,6 +279,12 @@ public class EthernetSettings extends SettingsPreferenceFragment implements
ethernetIpAddrPref.setSummary(R.string.device_info_default);
ethernetIpAddrPref.setTitle(R.string.ethernet_ip_addr);

+            // Create Ethernet MAC Address Preference
+            Preference ethernetMacAddrPref = new Preference(mContext);
+            ethernetMacAddrPref.setKey(prefix + KEY_ETH_HW_ADDRESS);
+            ethernetMacAddrPref.setSummary(R.string.device_info_default);
+            ethernetMacAddrPref.setTitle(R.string.ethernet_hw_addr);
+
// Create Ethernet Netmask Preference
Preference ethernetNetmaskPref = new Preference(mContext);
ethernetNetmaskPref.setKey(prefix + KEY_ETH_NET_MASK);
@@ -311,6 +320,7 @@ public class EthernetSettings extends SettingsPreferenceFragment implements

preferenceScreen.addPreference(ethernetNetInterface);
ethernetNetInterface.addPreference(ethernetIpAddrPref);
+           ethernetNetInterface.addPreference(ethernetMacAddrPref);
ethernetNetInterface.addPreference(ethernetNetmaskPref);
ethernetNetInterface.addPreference(ethernetGatewayPref);
ethernetNetInterface.addPreference(ethernetDns1Pref);
@@ -379,6 +389,7 @@ public class EthernetSettings extends SettingsPreferenceFragment implements
if (info != null) {
//setStringSummary(prefix + KEY_NET_INTERFACE, key);
setStringSummary(prefix + KEY_ETH_IP_ADDRESS, info.getIpAddress());
+               setStringSummary(prefix + KEY_ETH_HW_ADDRESS, getEthMac());
setStringSummary(prefix + KEY_ETH_NET_MASK, info.getNetmask());
setStringSummary(prefix + KEY_ETH_GATEWAY, info.getGateway());
log("hjf  info.getGateway() = " + info.getGateway());
@@ -389,6 +400,7 @@ public class EthernetSettings extends SettingsPreferenceFragment implements
updateCheckbox(key, (ListPreference) findPreference(prefix + KEY_ETH_MODE));
} else {
setStringSummary(prefix + KEY_ETH_IP_ADDRESS, nullIpInfo);
+               setStringSummary(prefix + KEY_ETH_HW_ADDRESS, nullIpInfo);
setStringSummary(prefix + KEY_ETH_NET_MASK, nullIpInfo);
setStringSummary(prefix + KEY_ETH_GATEWAY, nullIpInfo);
setStringSummary(prefix + KEY_ETH_DNS1, nullIpInfo);
@@ -397,6 +409,26 @@ public class EthernetSettings extends SettingsPreferenceFragment implements
}
}

+    // 获取 以太网MAC地址信息
+    public String getEthMac(){
+               BufferedReader reader = null;
+               try {
+                       reader = new BufferedReader(new FileReader("/sys/class/net/eth0/address"));
+                       return reader.readLine();
+               }catch (Exception e) {
+                       Log.e(TAG, "open sys/class/net/eth0/address failed : " + e);
+                       return "";
+               }finally {
+                       try {
+                               if (reader != null)
+                                       reader.close();
+                       } catch (IOException e) {
+                               Log.e(TAG, "close sys/class/net/eth0/address failed : " + e);
+                       }
+               }
+    }
+
+
private void updateCheckbox(String ifaceName, ListPreference preference) {
if (mEthManager == null) {
preference.setSummary("null");

http://www.dtcms.com/a/355597.html

相关文章:

  • Spring Boot 实战:接入 DeepSeek API 实现问卷文本优化
  • FFmpeg 实战:从零开始写一个简易视频播放器
  • 视频层和叠加层
  • 数据结构:冒泡排序 (Bubble Sort)
  • Android14 USB子系统的启动以及动态切换相关的init.usb.rc详解
  • mysql主从复制GTID模式
  • Day16_【机器学习—模型拟合问题】
  • AI智能能源管理系统深度剖析:从工业节能到数据中心降耗,解锁企业降本减排新方案
  • Docker 40个自动化管理脚本-1 (20/40)
  • CVPR2019 Oral论文《Side Window Filtering》解读及算法 Python 实现
  • 网络编程3-UDP协议
  • Megatron-Energon 和 Megatron-LM
  • 解锁五大联赛数据:API技术指南
  • Python在AI与数据科学工作流中的新角色:2025年实践指南
  • X-AnyLabeling:Win10上安装使用X-AnyLabeling标注工具
  • 国内永久免费云服务器有哪些?
  • AI视频生成工具全景对比:元宝AI、即梦AI、清影AI和Vidu AI
  • Java学习笔记之——通过分页查询样例感受JDBC、Mybatis以及MybatisPlus(一)
  • CPU、进程、线程上下文切换
  • 使用Rag 命中用户feedback提升triage agent 准确率
  • 特斯拉 Tesla FSD 12.6.4,FSD14, VLA 和 华为 ADS 4.0 比较
  • 广东省省考备考(第八十九天8.28)——判断推理(第九节课)
  • 智能客服多智能体(知识库问答+情绪感知+工单路由)
  • 玄机靶场 | 第九章-blueteam 的小心思3
  • openEuler中LVM调整实现home与root分区空间平衡
  • LeetCode 3446. 按对角线进行矩阵排序
  • Linux部分底层机制
  • 【每天一个知识点】云存储(Cloud Storage)
  • 从混沌到有序:工作流设计的创作迷思与破局之道
  • AI智能农业监测系统深度解读:从大田作物管理到病虫害预警,破解传统农业增产难题