فهرست منبع

修改之前安卓8以上获取不到Mac的问题
修改安卓8以上 跳转会死掉的问题

wangjk 4 سال پیش
والد
کامیت
05892f5501

+ 19 - 0
common/src/main/code/com/wdkl/ncs/android/lib/core/framework/JavaShopInstrumentationHook.java

@@ -43,6 +43,25 @@ public class JavaShopInstrumentationHook extends Instrumentation {
     }
 
     /**
+     * 兼容安卓8.0以上的会报错的问题
+     * @param cl
+     * @param className
+     * @param intent
+     * @return
+     * @throws InstantiationException
+     * @throws IllegalAccessException
+     * @throws ClassNotFoundException
+     */
+    public Activity newActivity(ClassLoader cl, String className,
+                                Intent intent)
+            throws InstantiationException, IllegalAccessException,
+            ClassNotFoundException {
+
+        return oldInstrumentation.newActivity(cl, className, intent);
+    }
+
+
+    /**
      * @author  LDD
      * @From   com.wdkl.ncs.android.lib.core.framework
      * @Data   2017/12/26 上午8:42

+ 2 - 1
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchRegisterActivity.kt

@@ -40,7 +40,8 @@ class WatchRegisterActivity: BaseActivity<WatchDevicePresenter, WatchActivityReg
     }
 
     override fun init() {
-        Constants.mac = NetHelper.getInstance().macAddress
+        Constants.mac = NetHelper.getInstance().macAddress2
+//        Constants.mac = ""
         Log.e(TAG,"mac "+Constants.mac)
         presenter.loadData(Constants.mac)
 

+ 28 - 0
home/src/main/code/com/wdkl/ncs/android/component/home/util/NetHelper.java

@@ -328,6 +328,34 @@ public class NetHelper {
         return mac;
     }
 
+    public String getMacAddress2() {
+        List<NetworkInterface> interfaces = null;
+        try {
+            interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
+            for (NetworkInterface networkInterface : interfaces) {
+                if (networkInterface != null && TextUtils.isEmpty(networkInterface.getName()) == false) {
+                    if ("wlan0".equalsIgnoreCase(networkInterface.getName())) {
+                        byte[] macBytes = networkInterface.getHardwareAddress();
+                        if (macBytes != null && macBytes.length > 0) {
+                            StringBuilder str = new StringBuilder();
+                            for (byte b : macBytes) {
+                                str.append(String.format("%02X:", b));
+                            }
+                            if (str.length() > 0) {
+                                str.deleteCharAt(str.length() - 1);
+                            }
+                            return str.toString();
+                        }
+                    }
+                }
+            }
+        } catch (SocketException e) {
+            e.printStackTrace();
+        }
+        return "unknown";
+    }
+
+
     /**
      * 通过WiFiManager获取mac地址
      * 这个方法Android 7.0是获取不到的,返回的是null,其实是返回“02:00:00:00:00:00”