问题:wifi地址写入后,恢复出厂设置才能显示出写入的
解决方案:
frameworks/base
diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java
index 1d433e767e5b..76853637413c 100644
--- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java
+++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java
@@ -29,6 +29,11 @@ import androidx.preference.PreferenceScreen;
import com.android.settingslib.R;
import com.android.settingslib.core.lifecycle.Lifecycle;
+import android.util.Log;
+import java.util.Enumeration;
+import android.system.ErrnoException;
+import java.net.SocketException;
+import java.net.NetworkInterface;
/**
* Preference controller for WIFI MAC address
@@ -80,11 +85,58 @@ public abstract class AbstractWifiMacAddressPreferenceController
protected String[] getConnectivityIntents() {
return CONNECTIVITY_INTENTS;
}
+ sqlin add wifi macAddresses
+ public void getMacaddress(){
+ try {
+ NetworkInterface intf;
+ String macAddress2 = null;
+ Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
+ while (interfaces.hasMoreElements()) {
+ intf = interfaces.nextElement();
+ if (null == intf ||
+ !TextUtils.equals("wlan0", intf.getName().toLowerCase())
+ ) {
+ continue;
+ }
+ final byte[] mac = intf.getHardwareAddress();
+ if (mac != null) {
+ StringBuilder buf = new StringBuilder();
+ for (byte aMac : mac) {
+ buf.append(String.format("%02X:", aMac));
+ }
+ if (buf.length() > 0) {
+ buf.deleteCharAt(buf.length() - 1);
+ }
+ macAddress2 = buf.toString().toLowerCase();
+
+ mWifiMacAddress.setSummary(macAddress2);
+
+ break;
+ }
+ }
+ }catch (SocketException s)
+ {
+ Log.e("SocketException", "File write failed: " + s.toString());
+ }
+ }
@SuppressLint("HardwareIds")
@Override
protected void updateConnectivity() {
- final String[] macAddresses = mWifiManager.getFactoryMacAddresses();
+ //sqlin add wifi macAddresses
+ final String[] macAddresses = mWifiManager.getFactoryMacAddresses();
+ String macAddress = null;
+ if (macAddresses != null && macAddresses.length > 0) {
+ macAddress = macAddresses[0];
+
+ }
+ if (TextUtils.isEmpty(macAddress) || macAddress.equals(WifiInfo.DEFAULT_MAC_ADDRESS)) {
+ mWifiMacAddress.setSummary(R.string.status_unavailable);
+ } else {
+ getMacaddress();
+ }
+
+ /* final String[] macAddresses = mWifiManager.getFactoryMacAddresses();
String macAddress = null;
if (macAddresses != null && macAddresses.length > 0) {
macAddress = macAddresses[0];
@@ -98,6 +150,6 @@ public abstract class AbstractWifiMacAddressPreferenceController
mWifiMacAddress.setSummary(R.string.status_unavailable);
} else {
mWifiMacAddress.setSummary(macAddress);
- }
+ }*/
}
}