概要
现场调试人员需要查看以太网的MAC地址,但该系统状态中没有显示,我们在状态信息下直接加一栏以太网的MAC地址信息。
修改记录
--- a/packages/apps/Settings/res/values-zh-rCN/strings.xml
+++ b/packages/apps/Settings/res/values-zh-rCN/strings.xml
@@ -1053,6 +1053,7 @@
<string name="status_roaming" msgid="2638800467430913403">"漫游"</string>
<string name="status_operator" msgid="2274875196954742087">"网络"</string>
<string name="status_wifi_mac_address" msgid="2202206684020765378">"WLANMAC 地址"</string>
+ <string name="status_eth_mac_address">"以太网MAC地址"</string>
<string name="status_bt_address" msgid="4195174192087439720">"蓝牙地址"</string>
<string name="status_serial_number" msgid="2257111183374628137">"序列号"</string>
<string name="status_unavailable" msgid="7862009036663793314">"不可用"</string>
--- a/packages/apps/Settings/res/values/strings.xml
+++ b/packages/apps/Settings/res/values/strings.xml
@@ -2447,6 +2447,7 @@
<string name="status_operator">Network</string>
<!-- About phone, status item title. The MAC address of the Wi-Fi network adapter. -->
<string name="status_wifi_mac_address">Wi\u2011Fi MAC address</string>
+ <string name="status_eth_mac_address">ETH MAC address</string>
<!-- About phone, status item title. The bluetooth adapter's hardware address-->
<string name="status_bt_address">Bluetooth address</string>
<!-- About phone, status item title. The hardware serial number. [CHAR LIMIT=30]-->
--- a/packages/apps/Settings/res/xml/device_info_status.xml
+++ b/packages/apps/Settings/res/xml/device_info_status.xml
@@ -53,6 +53,14 @@
android:title="@string/status_wifi_mac_address"
android:summary="@string/device_info_not_available"
android:persistent="false" />
+
+ <com.android.settings.CopyablePreference android:key="eth_mac_address"
+ android:enabled="false"
+ android:shouldDisableView="false"
+ android:title="@string/status_eth_mac_address"
+ android:summary="@string/device_info_not_available"
+ android:persistent="false" />
+
<com.android.settings.CopyablePreference android:key="bt_address"
android:enabled="false"
android:shouldDisableView="false"
--- a/packages/apps/Settings/src/com/android/settings/Utils.java
+++ b/packages/apps/Settings/src/com/android/settings/Utils.java
@@ -105,6 +105,9 @@ import static android.content.Intent.EXTRA_USER;
import static android.content.Intent.EXTRA_USER_ID;
import static android.text.format.DateUtils.FORMAT_ABBREV_MONTH;
import static android.text.format.DateUtils.FORMAT_SHOW_DATE;
+import java.net.NetworkInterface;
+import java.util.Collections;
+import java.util.List;
public final class Utils extends com.android.settingslib.Utils {
@@ -240,6 +243,31 @@ public final class Utils extends com.android.settingslib.Utils {
LinkProperties prop = cm.getLinkProperties(ConnectivityManager.TYPE_WIFI);
return formatIpAddresses(prop);
}
+
+ public static String getMacAddress(String interfaceName){
+ try{
+ List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
+ for (NetworkInterface intf : interfaces) {
+ if (interfaceName != null){
+ if(!intf.getName().equalsIgnoreCase(interfaceName)) continue;
+ }
+ byte[] mac = intf.getHardwareAddress();
+ if(mac == null) return "";
+ StringBuilder buf = new StringBuilder();
+ for(int idx=0;idx<mac.length;idx++)
+ buf.append(String.format("%02X:",mac[idx]));
+ if(buf.length()>0) buf.deleteCharAt(buf.length()-1);
+ return buf.toString();
+ }
+ }catch (Exception ex) {
+ System.out.println(ex.toString());
+ System.out.println("------------------------------");
+ System.out.println(ex.getMessage());
+ System.out.println("------------------------------");
+ ex.printStackTrace();
+ }
+ return "";
+ }
/**
* Returns the default link's IP addresses, if any, taking into account IPv4 and IPv6 style
--- a/packages/apps/Settings/src/com/android/settings/deviceinfo/Status.java
+++ b/packages/apps/Settings/src/com/android/settings/deviceinfo/Status.java
@@ -26,6 +26,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Resources;
import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Build;
@@ -45,6 +46,13 @@ import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import java.lang.ref.WeakReference;
+import java.io.IOException;
+import java.io.DataOutputStream;
+import java.io.DataInputStream;
+import android.util.Log;
+import java.io.InputStreamReader;
+import java.lang.Process;
+import java.io.LineNumberReader;
@@ -56,6 +64,7 @@ import java.lang.ref.WeakReference;
*/
public class Status extends SettingsPreferenceFragment {
+ private static final String TAG = "Status";
private static final String KEY_BATTERY_STATUS = "battery_status";
private static final String KEY_BATTERY_LEVEL = "battery_level";
private static final String KEY_IP_ADDRESS = "wifi_ip_address";
@@ -65,6 +74,7 @@ public class Status extends SettingsPreferenceFragment {
private static final String KEY_WIMAX_MAC_ADDRESS = "wimax_mac_address";
private static final String KEY_SIM_STATUS = "sim_status";
private static final String KEY_IMEI_INFO = "imei_info";
+ private static final String KEY_ETH_MAC_ADDRESS = "eth_mac_address";
// Broadcasts to listen to for connectivity changes.
private static final String[] CONNECTIVITY_INTENTS = {
@@ -93,6 +103,7 @@ public class Status extends SettingsPreferenceFragment {
private Preference mIpAddress;
private Preference mWifiMacAddress;
private Preference mWimaxMacAddress;
+ private Preference mEthMacAddress;
private Handler mHandler;
@@ -170,6 +181,7 @@ public class Status extends SettingsPreferenceFragment {
mWifiMacAddress = findPreference(KEY_WIFI_MAC_ADDRESS);
mWimaxMacAddress = findPreference(KEY_WIMAX_MAC_ADDRESS);
mIpAddress = findPreference(KEY_IP_ADDRESS);
+ mEthMacAddress = findPreference(KEY_ETH_MAC_ADDRESS);
mRes = getResources();
mUnknown = mRes.getString(R.string.device_info_default);
@@ -278,6 +290,11 @@ public class Status extends SettingsPreferenceFragment {
}
}
+ private void setEthStatus() {
+ String macAddress = Utils.getMacAddress("eth0");
+ mEthMacAddress.setSummary(!TextUtils.isEmpty(macAddress) ? macAddress : mUnavailable);
+ }
+
private void setWifiStatus() {
WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
String macAddress = wifiInfo == null ? null : wifiInfo.getMacAddress();
@@ -310,6 +327,7 @@ public class Status extends SettingsPreferenceFragment {
setWimaxStatus();
setWifiStatus();
setBtStatus();
+ setEthStatus();
setIpAddressStatus();
}