From eae160d56c5662a6d8d122fc20a7a300614e5a12 Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期三, 11 十一月 2020 15:55:06 +0800
Subject: [PATCH] 0312 尝试修复部分机型横竖屏幕切换点击问题

---
 SdkProject/library/src/main/java/com/secondworld/universalsdk/H2EngineSDK.java |   62 +++++++++++++++++++++++++++---
 1 files changed, 55 insertions(+), 7 deletions(-)

diff --git a/SdkProject/library/src/main/java/com/secondworld/universalsdk/H2EngineSDK.java b/SdkProject/library/src/main/java/com/secondworld/universalsdk/H2EngineSDK.java
index 85832bb..c53960b 100644
--- a/SdkProject/library/src/main/java/com/secondworld/universalsdk/H2EngineSDK.java
+++ b/SdkProject/library/src/main/java/com/secondworld/universalsdk/H2EngineSDK.java
@@ -4,33 +4,81 @@
 
 import org.json.JSONObject;
 
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.List;
+
+import dalvik.system.DexFile;
+
 
 public class H2EngineSDK {
 
-    public static HashMap<Integer, ICommand> allCommand = new HashMap();
+    private static HashMap<Integer, ICommand> allCommand = new HashMap<Integer, ICommand>();
 
-    public static void init() {
-
+    /**
+     * 鍒濆鍖栨墍鏈夊懡浠�
+     */
+    public static void initCommandMap() {
+        allCommand.clear();
+        List<String> classesName = getClassName("com.secondworld.universalsdk.command");
+        try {
+            for (String name : classesName) {
+                Class<?> aClass = Class.forName(name);
+                if (!aClass.isInterface())
+                    addCommand((ICommand) aClass.newInstance());
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
     }
 
-    private static void AddCommand(ICommand command) {
+    public static void addCommand(ICommand command) {
         allCommand.put(command.getCode(), command);
     }
 
-    //unity 鍙戞潵鐨勬秷鎭�
+    /**
+     * unity 鍙戞潵鐨勬秷鎭�
+     *
+     * @param json
+     */
     public static void HandleUnityMessage(String json) {
         try {
+            LogUtil.debug("HandleUnityMessage", json);
             JSONObject _json = new JSONObject(json);
             int code = _json.getInt("code");
             ICommand command = allCommand.get(code);
             if (command == null) {
+
                 return;
             }
             command.process(json);
-        } catch (Exception e) {
-
+        } catch (Exception ignored) {
         }
     }
 
+    /**
+     * 閫氳繃鍙嶅皠璇诲彇鎸囧畾鍖呭悕涓嬬殑鎵�鏈夌被鍚�
+     *
+     * @param packageName
+     * @return
+     */
+    public static List<String> getClassName(String packageName) {
+        List<String> classNameList = new ArrayList<String>();
+        try {
+            DexFile df = new DexFile(BaseApplication.APP.getPackageCodePath());//閫氳繃DexFile鏌ユ壘褰撳墠鐨凙PK涓彲鎵ц鏂囦欢
+            Enumeration<String> enumeration = df.entries();//鑾峰彇df涓殑鍏冪礌  杩欓噷鍖呭惈浜嗘墍鏈夊彲鎵ц鐨勭被鍚� 璇ョ被鍚嶅寘鍚簡鍖呭悕+绫诲悕鐨勬柟寮�
+            while (enumeration.hasMoreElements()) {//閬嶅巻
+                String className = (String) enumeration.nextElement();
+                if (className.contains(packageName)) {//鍦ㄥ綋鍓嶆墍鏈夊彲鎵ц鐨勭被閲岄潰鏌ユ壘鍖呭惈鏈夎鍖呭悕鐨勬墍鏈夌被
+                    classNameList.add(className);
+                }
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return classNameList;
+    }
+
 }

--
Gitblit v1.8.0