From 9eef1c69f214882b5ada2dae2a55df21bdd3058b Mon Sep 17 00:00:00 2001
From: 刘卫锦 <lwj@hdlchina.com.cn>
Date: 星期一, 26 六月 2023 16:02:48 +0800
Subject: [PATCH] Merge branch 'master' of http://172.16.1.23:6688/r/~wjc/HDLPhotovoltaicDebugAPP

---
 app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java                   |    1 
 app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java                       |   65 ++--
 app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationDialog.java          |    2 
 app/src/main/res/values/themes.xml                                             |    2 
 app/src/main/AndroidManifest.xml                                               |   15 
 app/src/main/java/com/hdl/photovoltaic/base/BaseActivity.java                  |   10 
 app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationInputDialog.java     |    2 
 app/src/main/res/layout/toolbar_top_view_44.xml                                |    1 
 .idea/deploymentTargetDropDown.xml                                             |   17 +
 app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java                  |   83 +++++
 .idea/misc.xml                                                                 |    7 
 app/src/main/java/com/hdl/photovoltaic/other/HdlThreadLogic.java               |   10 
 app/src/main/java/com/hdl/photovoltaic/utils/WifiUtils.java                    |  314 ++++++++++++++++++++++++
 app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java          |    2 
 app/src/main/res/layout/loading_exception_log.xml                              |   58 ++++
 app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationExceptionDialog.java |   85 ++++++
 app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java               |   42 +++
 app/src/main/java/com/hdl/photovoltaic/base/BaseFragment.java                  |    4 
 app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java  |    4 
 19 files changed, 645 insertions(+), 79 deletions(-)

diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
new file mode 100644
index 0000000..d549df4
--- /dev/null
+++ b/.idea/deploymentTargetDropDown.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="deploymentTargetDropDown">
+    <runningDeviceTargetSelectedWithDropDown>
+      <Target>
+        <type value="RUNNING_DEVICE_TARGET" />
+        <deviceKey>
+          <Key>
+            <type value="SERIAL_NUMBER" />
+            <value value="2ffc9a07" />
+          </Key>
+        </deviceKey>
+      </Target>
+    </runningDeviceTargetSelectedWithDropDown>
+    <timeTargetWasSelectedWithDropDown value="2023-06-26T02:32:08.398530Z" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index ee5e019..316fc8d 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -4,16 +4,21 @@
     <option name="filePathToZoomLevelMap">
       <map>
         <entry key="../../../../../layout/custom_preview.xml" value="0.22314814814814815" />
+        <entry key="app/src/main/res/drawable/progress_small.xml" value="0.1275" />
         <entry key="app/src/main/res/layout/activity_home_login.xml" value="0.10030395136778116" />
         <entry key="app/src/main/res/layout/activity_my_power_station.xml" value="0.10030395136778116" />
         <entry key="app/src/main/res/layout/fragment_house_list.xml" value="0.10030395136778116" />
         <entry key="app/src/main/res/layout/fragment_me.xml" value="0.10030395136778116" />
+        <entry key="app/src/main/res/layout/frgment_house_list_line.xml" value="0.1921875" />
+        <entry key="app/src/main/res/layout/loading_alert.xml" value="0.1" />
+        <entry key="app/src/main/res/layout/loading_confirm.xml" value="0.1" />
         <entry key="app/src/main/res/layout/loading_confirm_input.xml" value="0.1" />
         <entry key="app/src/main/res/layout/loading_exception_log.xml" value="0.1921875" />
+        <entry key="app/src/main/res/layout/toolbar_top_view_44.xml" value="0.1921875" />
         <entry key="app/src/main/res/layout/toolbar_top_view_52.xml" value="0.10030395136778116" />
       </map>
     </option>
   </component>
   <component name="ExternalStorageConfigurationManager" enabled="true" />
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="11" project-jdk-type="JavaSDK" />
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK" />
 </project>
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0b1b3dd..c5aaabe 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
-    package="com.hdl.photovoltaic" >
+    package="com.hdl.photovoltaic">
+
 
     <uses-permission
         android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
@@ -12,7 +13,10 @@
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
 
 
     <application
@@ -22,20 +26,19 @@
         android:label="@string/app_name"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
-        android:theme="@style/Theme.PhotovoltaicDebug" >
+        android:theme="@style/Theme.PhotovoltaicDebug">
         <activity
             android:name=".ui.device.FastScanActivity"
             android:exported="false" />
         <activity
             android:name=".ui.MyPowerStationActivity"
-            android:exported="false"
-            />
+            android:exported="false" />
         <activity
             android:name=".ui.HomeLoginActivity"
             android:exported="false" />
         <activity
             android:name=".ui.StartActivity"
-            android:exported="true" >
+            android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
diff --git a/app/src/main/java/com/hdl/photovoltaic/base/BaseActivity.java b/app/src/main/java/com/hdl/photovoltaic/base/BaseActivity.java
index 55f0f95..4be52de 100644
--- a/app/src/main/java/com/hdl/photovoltaic/base/BaseActivity.java
+++ b/app/src/main/java/com/hdl/photovoltaic/base/BaseActivity.java
@@ -1,19 +1,11 @@
 package com.hdl.photovoltaic.base;
 
 import android.app.Activity;
-import android.content.Context;
-import android.content.DialogInterface;
 import android.content.Intent;
-import android.graphics.drawable.ColorDrawable;
 import android.os.Bundle;
-import android.util.Log;
-import android.view.KeyEvent;
 import android.view.View;
-import android.view.WindowManager;
-import android.widget.TextView;
 
 import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
 import androidx.appcompat.app.AppCompatActivity;
 
 import com.hdl.photovoltaic.R;
@@ -53,7 +45,7 @@
      */
     protected LoadingDialog getLoadingDialog() {
         if (loadingDialog == null && _mActivity != null) {
-            loadingDialog = new LoadingDialog(_mActivity, R.style.Custom_AlertDialog);
+            loadingDialog = new LoadingDialog(_mActivity, R.style.Custom_Dialog);
         }
         return loadingDialog;
     }
diff --git a/app/src/main/java/com/hdl/photovoltaic/base/BaseFragment.java b/app/src/main/java/com/hdl/photovoltaic/base/BaseFragment.java
index 1cd2301..5ae379f 100644
--- a/app/src/main/java/com/hdl/photovoltaic/base/BaseFragment.java
+++ b/app/src/main/java/com/hdl/photovoltaic/base/BaseFragment.java
@@ -3,11 +3,9 @@
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
-import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.view.WindowManager;
 import android.widget.FrameLayout;
 
 import androidx.annotation.NonNull;
@@ -164,7 +162,7 @@
      */
     protected LoadingDialog getLoadingDialog() {
         if (loadingDialog == null && _mActivity != null) {
-            loadingDialog = new LoadingDialog(_mActivity, R.style.Custom_AlertDialog);
+            loadingDialog = new LoadingDialog(_mActivity, R.style.Custom_Dialog);
         }
         return loadingDialog;
     }
diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlThreadLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlThreadLogic.java
index 13d7ea1..a50ae9f 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlThreadLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlThreadLogic.java
@@ -4,12 +4,14 @@
 import android.content.Context;
 import android.os.Handler;
 import android.os.Looper;
+import android.util.Log;
 import android.widget.Toast;
 
 import androidx.appcompat.app.AlertDialog;
 
 import com.hdl.photovoltaic.enums.ShowErrorMode;
 import com.hdl.photovoltaic.widget.ConfirmationDialog;
+import com.hdl.photovoltaic.widget.ConfirmationExceptionDialog;
 
 /**
  * 绾跨▼閫昏緫
@@ -33,6 +35,7 @@
                 handler.post(run);
             }
         } catch (Exception e) {
+
             exception(e, showErrorMode, context);
         }
     }
@@ -119,8 +122,11 @@
                     @Override
                     public void Confirm() {
                         confirmationDialog.dismiss();
-                        String s = getStackTrace(ex);
-
+                        ConfirmationExceptionDialog confirmationExceptionDialog = new ConfirmationExceptionDialog(context);
+//                        String s = getStackTrace(ex);
+                        String s = Log.getStackTraceString(ex);
+                        confirmationExceptionDialog.setContent(s);
+                        confirmationExceptionDialog.show();
                     }
                 });
 
diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
index 1a16526..245bdbc 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
@@ -1,6 +1,7 @@
 package com.hdl.photovoltaic.other;
 
 
+import com.google.gson.Gson;
 import com.hdl.photovoltaic.config.UserConfigManage;
 import com.hdl.photovoltaic.uni.HDLUniMP;
 import com.hdl.photovoltaic.uni.HDLUniMPSDKManager;
@@ -34,7 +35,7 @@
     }
 
     /**
-     * 鍘熺敓鎺ユ敹uni鍙戞潵鐨勬暟鎹�
+     * 鍘熺敓鎺ユ敹鍒皍ni鍙戞潵鐨勬暟鎹�
      *
      * @param appId    -uni灏忕▼搴忔寚瀹氱殑appId
      * @param event    -uni灏忕▼搴忓彂鏉ユ暟鎹�
@@ -52,9 +53,9 @@
                 jsonObject = new org.json.JSONObject(data.toString());
             }
             //浣忓畢妯″潡
-            if (HDLUniMP.UNI_EVENT_HOME_CREATION.equals(event)) {
+            if (HDLUniMP.UNI_EVENT_REPLY_HOME_LIST.equals(event)) {
                 if (callback != null) {
-                    callback.invoke(null);
+                    uniCallbackData(null, "0", "", callback);
                 }
             }
             HdlLogLogic.print("uni===鍘熺敓鎺ユ敹uni鍙戞潵鐨勬暟鎹�", event + "\r\n" + data);
@@ -71,7 +72,9 @@
      * @param jsonObject 闄勪欢鏁版嵁(娌℃湁鏁版嵁濉玭ull)
      */
     public void openUniMP(String path, JSONObject jsonObject) {
-        JSONObject json = this.createdJsonDate(jsonObject);
+
+        JSONObject json = this.createdJsonDate(jsonObject, true);
+        HdlLogLogic.print("uni===缁勮uni鍙戦�佹暟鎹牸寮�", json.toString());
         HDLUniMPSDKManager.getInstance().openUniMP(HDLUniMP.UNI_APP_ID, path, json, HdlUniLogic.this);
     }
 
@@ -87,7 +90,7 @@
             HDLUniMP.UniCallBackBaseBean callBackBaseBean = new HDLUniMP.UniCallBackBaseBean();
             callBackBaseBean.setTopic(topic);
             callBackBaseBean.setData(body);
-            HDLUniMPSDKManager.getInstance().sendUniMPEvent(HDLUniMP.UNI_APP_ID, HDLUniMP.UNI_APP_ID, callBackBaseBean.getJSONObject());
+            HDLUniMPSDKManager.getInstance().sendUniMPEvent(HDLUniMP.UNI_APP_ID, HDLUniMP.UNI_APP_ID, getJSONObject(callBackBaseBean));
         } catch (Exception e) {
             HdlLogLogic.print("uni===鍘熺敓涓诲姩鍚戝皬绋嬪簭鍙戦�侀�氱煡浜嬩欢", e.getMessage());
         }
@@ -103,22 +106,82 @@
     /**
      * 缁勮uni鍙戦�佹暟鎹牸寮�
      *
-     * @param data -闄勪欢鏁版嵁(娌℃湁鏁版嵁濉玭ull)
+     * @param data                   -闄勪欢鏁版嵁(娌℃湁鏁版嵁濉玭ull)
+     * @param isTokenAndRefreshToken (true=搴曞眰榛樿娣诲姞token鍜宺efreshToken;false=涓嶅姞)
      * @return JSONObject
      */
-    public JSONObject createdJsonDate(JSONObject data) {
+    private JSONObject createdJsonDate(JSONObject data, boolean isTokenAndRefreshToken) {
         HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean();
         try {
             if (data == null) {
                 data = new JSONObject();
             }
-            data.put("token", UserConfigManage.getInstance().getToken());
-            data.put("refreshToken", UserConfigManage.getInstance().getRefreshToken());
+            if (isTokenAndRefreshToken) {
+                data.put("token", UserConfigManage.getInstance().getToken());
+                data.put("refreshToken", UserConfigManage.getInstance().getRefreshToken());
+            }
             uniCallBackBaseBean.setData(data);
-            return uniCallBackBaseBean.getJSONObject();
+            return getJSONObject(uniCallBackBaseBean);
         } catch (Exception e) {
             HdlLogLogic.print("uni===缁勮uni鍙戦�佹暟鎹牸寮�", e.getMessage());
         }
         return new JSONObject();
     }
+
+
+    /**
+     * 缁勮uni鍙戦�佹暟鎹牸寮�
+     * 鍥炶皟鏁版嵁缁檜ni灏忕▼搴�,缁熶竴鍦ㄨ繖閲屽鐞�;
+     *
+     * @param obj      闄勫姞鏁版嵁
+     * @param code     鐘舵�佺爜-鎴愬姛锛�0锛夋垨鑰呭け璐ワ紙-2锛�
+     * @param msg      缁撴灉鎻忚堪鐨勪俊鎭�
+     * @param callback 鍥炶皟
+     */
+    private void uniCallbackData(Object obj, String code, String msg, DCUniMPJSCallback callback) {
+        HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean();
+        try {
+            uniCallBackBaseBean.setCode(code);
+            uniCallBackBaseBean.setMes(msg);
+            uniCallBackBaseBean.setData(obj);
+            if (callback != null) {
+                callback.invoke(uniCallBackBaseBean);
+            }
+        } catch (Exception e) {
+            HdlLogLogic.print("uni===缁勮uni鍙戦�佹暟鎹牸寮�", e.getMessage());
+        }
+
+
+    }
+
+
+    /**
+     * 鑾峰彇uni鍙戦�佸璞�
+     *
+     * @param obj  闄勫姞鏁版嵁
+     * @param code 鐘舵�佺爜
+     * @param msg  缁撴灉鎻忚堪鐨勪俊鎭�
+     */
+    private HDLUniMP.UniCallBackBaseBean getUniCallBackBaseBean(Object obj, String code, String msg) {
+        HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean();
+        uniCallBackBaseBean.setCode(code);
+        uniCallBackBaseBean.setMes(msg);
+        uniCallBackBaseBean.setData(obj);
+        return uniCallBackBaseBean;
+    }
+
+    /**
+     * 褰撳墠瀵硅薄杞� JSONObject
+     *
+     * @return JSONObject
+     */
+    private JSONObject getJSONObject(Object obj) {
+        try {
+            String json = new Gson().toJson(obj);
+            return new JSONObject(json);
+        } catch (Exception e) {
+            return new JSONObject();
+        }
+    }
 }
+
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java
index 4af46c0..adf4e9f 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java
@@ -1,6 +1,8 @@
 package com.hdl.photovoltaic.ui;
 
 
+import android.Manifest;
+import android.content.pm.PackageManager;
 import android.os.Bundle;
 import android.text.Editable;
 import android.text.Spannable;
@@ -15,8 +17,10 @@
 import android.widget.TextView;
 
 
+import androidx.annotation.NonNull;
 import androidx.appcompat.content.res.AppCompatResources;
 
+import com.hdl.photovoltaic.HDLApp;
 import com.hdl.photovoltaic.R;
 import com.hdl.photovoltaic.base.CustomBaseActivity;
 import com.hdl.photovoltaic.enums.ShowErrorMode;
@@ -28,6 +32,9 @@
 import com.hdl.photovoltaic.listener.CloudCallBeak;
 import com.hdl.photovoltaic.other.HdlAccountLogic;
 import com.hdl.photovoltaic.other.HdlThreadLogic;
+import com.hdl.photovoltaic.ui.device.FastScanActivity;
+import com.hdl.photovoltaic.utils.PermissionUtils;
+import com.hdl.photovoltaic.utils.WifiUtils;
 
 
 public class HomeLoginActivity extends CustomBaseActivity {
@@ -234,13 +241,12 @@
         viewBinding.homeLoginExperienceTv.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-
+//                requestPermissions();
 //                startActivity(MyPowerStationActivity.class);
-
                 HdlThreadLogic.runMainThread(new Runnable() {
                     @Override
                     public void run() {
-//
+                        int s = 1 / 0;
                     }
                 }, _mActivity, ShowErrorMode.YES);
             }
@@ -312,4 +318,34 @@
         view.setText(spannable);
     }
 
+
+    private void requestPermissions() {
+        String[] ary = PermissionUtils.checkPermission(_mActivity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION});
+        if (ary.length > 0) {
+            requestPermissions(ary, PermissionUtils.STATUS_SUCCESS);
+        } else {
+            wifi();
+        }
+    }
+
+    @Override
+    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
+        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+        if (requestCode == PermissionUtils.STATUS_SUCCESS) {
+            for (int i = 0; i < permissions.length; i++) {
+                if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
+                    wifi();
+                }
+
+            }
+        }
+
+    }
+
+    public void wifi() {
+        WifiUtils wifiUtils = new WifiUtils(HDLApp.getInstance());
+//        wifiUtils.getCurrentConnectWifiInfo();
+//        wifiUtils.getScanResult();
+        wifiUtils.connectWiFi("Application", "12345678", 3);
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java
index 0bbf25e..4f6568f 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java
@@ -28,7 +28,7 @@
 
     @Override
     public void onBindView(Bundle savedInstanceState) {
-        getWindow().setStatusBarColor(getColor(R.color.text_245EC3));
+
         //鍒濆鍖�
         initView();
         //鍒濆鍖栫晫闈㈢洃鍚櫒
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java
index ee3f0f4..84e87e7 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java
@@ -12,6 +12,7 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        getWindow().setStatusBarColor(getColor(R.color.text_245EC3));
         setContentView(R.layout.activity_start);
         Intent intent = new Intent();
         intent.setClass(this, HomeLoginActivity.class);
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java b/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java
index 781bb8a..9373411 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java
@@ -73,7 +73,7 @@
             @Override
             public void onClick(View v) {
                 // 鎵撳紑灏忕▼搴忛〉闈�
-                HdlUniLogic.getInstance().openUniMP(HDLUniMP.UNI_EVENT_HOME_CREATION, null);
+                HdlUniLogic.getInstance().openUniMP(HDLUniMP.UNI_EVENT_OPEN_HOME_CREATION, null);
             }
         });
         //璁剧疆涓嬫媺绠ご棰滆壊
@@ -95,7 +95,7 @@
                     return;
                 }
                 HouseListBean houseListBean = houseListBeanList.get(position);
-                String path = HDLUniMP.UNI_EVENT_HOME_CREATION + "?homeId=" + houseListBean.getHomeId();
+                String path = HDLUniMP.UNI_EVENT_OPEN_HOME_DETAILS + "?homeId=" + houseListBean.getHomeId();
                 HdlUniLogic.getInstance().openUniMP(path, null);
             }
         });
diff --git a/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java b/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java
index f9a6b51..220440c 100644
--- a/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java
+++ b/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java
@@ -14,38 +14,41 @@
 
     /*********UniMP wgt id*********/
     public final static String UNI_APP_ID = "__UNI__A2E7300";//鍏変紡wgt鍖呭皬绋嬪簭id
-
     /*********UniMP Event 鍘熺敓鍜屽皬绋嬪簭浜や簰 鑷畾涔夐�氱煡浜嬩欢*********/
     public final static String UNI_EVENT_uniMPOnClose = "uni_MPOnClose";//鑷畾涔夊皬绋嬪簭鍏抽棴浜嬩欢
-
     public final static String UNI_EVENT_GetAppParams = "uni_GetAppParams";//鑾峰彇APP搴旂敤淇℃伅
 
+    //娉ㄦ剰锛氥�愬皬绋嬪簭銆戝彂閫佸埌銆愬師鐢熴�� 鍔犲墠缂�:uni_
+    /*********浣忓畢銆愮數绔欍�戞ā鍧�*********/
+    public final static String UNI_EVENT_REPLY_HOME_MODEL = "uni_home_model";//浣忓畢妯″潡
+    public final static String UNI_EVENT_REPLY_HOME_LIST = "list";//鑾峰彇浣忓畢銆愮數绔欍�戝垪琛�
+    public final static String UNI_EVENT_REPLY_HOME_CREATION = "creation";//浣忓畢銆愮數绔欍�戝垱寤�
+    public final static String UNI_EVENT_REPLY_HOME_EDIT = "edit";//浣忓畢銆愮數绔欍�戠紪杈�
+    public final static String UNI_EVENT_REPLY_HOME_DETAILS = "details";//浣忓畢銆愮數绔欍�戣鎯�
+    public final static String UNI_EVENT_REPLY_Home_DEl = "del";//浣忓畢銆愮數绔欍�戝垹闄�
+    /*********璁惧妯″潡*********/
+    public final static String UNI_EVENT_REPLY_DEVICE_MODEL = "uni_device_model";//璁惧妯″潡
+    public final static String UNI_EVENT_REPLY_DEVICE_LIST = "list";//閫嗗彉鍣ㄨ澶囧垪琛�
+    public final static String UNI_EVENT_REPLY_DEVICE_CHILD_LIST = "child_list";//閫嗗彉鍣ㄣ�愪笅鎸傘�戣澶囧垪琛�
+    public final static String UNI_EVENT_REPLY_DEVICE_ADD = "add";//璁惧娣诲姞
+    public final static String UNI_EVENT_REPLY_DEVICE_DEL = "del";//璁惧鍒犻櫎
+    public final static String UNI_EVENT_REPLY_DEVICE_OID = "oid";//璁惧銆愬寘鎷笅鎸傝澶囥�憃id鍒楄〃
 
-//    //銆愬皬绋嬪簭銆戝彂閫佸埌銆愬師鐢熴�� 鍔犲墠缂�:uni_
-//public final static String UNI_EVENT_HOME_MODEL = "uni_home_model";//浣忓畢妯″潡
-//    public final static String UNI_EVENT__DEVICE_MODEL = "uni_device_model";//璁惧妯″潡
-//    /*********浣忓畢銆愮數绔欍�戞ā鍧�*********/
-//    public final static String UNI_EVENT_HOME_LIST = "list";//鑾峰彇浣忓畢銆愮數绔欍�戝垪琛�
-//    public final static String UNI_EVENT_HOME_CREATION = "creation";//浣忓畢銆愮數绔欍�戝垱寤�
-//    public final static String UNI_EVENT_HOME_EDIT = "edit";//浣忓畢銆愮數绔欍�戠紪杈�
-//    public final static String UNI_EVENT_HOME_DETAILS = "details";//浣忓畢銆愮數绔欍�戣鎯�
-//    public final static String UNI_EVENT_Home_DEl = "del";//浣忓畢銆愮數绔欍�戝垹闄�
-//    /*********璁惧妯″潡*********/
-//    public final static String UNI_EVENT_DEVICE_LIST = "list";//閫嗗彉鍣ㄨ澶囧垪琛�
-//    public final static String UNI_EVENT_DEVICE_CHILD_LIST = "child_list";//閫嗗彉鍣ㄣ�愪笅鎸傘�戣澶囧垪琛�
-//    public final static String UNI_EVENT_DEVICE_ADD = "add";//璁惧娣诲姞
-//    public final static String UNI_EVENT_DEVICE_DEL = "del";//璁惧鍒犻櫎
-//    public final static String UNI_EVENT_DEVICE_OID = "oid";//璁惧銆愬寘鎷笅鎸傝澶囥�憃id鍒楄〃
+    /*********Wifi妯″潡*********/ //鍗敠瀹氫箟
+    public final static String UNI_EVENT_REPLY_WIFI_MODEL = "uni_wifi_model";//wifi妯″潡
+    public final static String UNI_EVENT_REPLY_WIFI_LIST = "list";//鑾峰彇wifi鍒楄〃
+    public final static String UNI_EVENT_REPLY_WIFI_INFO = "info";//鑾峰彇褰撳墠wifi淇℃伅
+    public final static String UNI_EVENT_REPLY_WIFI_CONNECT = "connect";//杩炴帴wifi
+
+    //娉ㄦ剰锛氥�愬師鐢熴�戜富鍔ㄥ彂閫佸埌銆愬皬绋嬪簭銆� 鍔犲墠缂�:app_
 
 
-    //銆愬師鐢熴�戜富鍔ㄥ彂閫佸埌銆愬皬绋嬪簭銆� 鍔犲墠缂�:app_
-
-    //銆愬師鐢熴�戞墦寮�銆愬皬绋嬪簭銆戦〉闈㈣矾寰�(UNI_EVENT_HOME_CREATION+?key=value&key=鍙傛暟涓�)
+    //娉ㄦ剰锛氥�愬師鐢熴�戞墦寮�銆愬皬绋嬪簭銆戦〉闈㈣矾寰�(UNI_EVENT_OPEN_HOME_CREATION+?key=value&key=鍙傛暟涓�)
     /*********浣忓畢妯″潡*********/
-    public final static String UNI_EVENT_HOME_CREATION = "pages/powerStation/powerStationCreate";//浣忓畢銆愮數绔欍�戝垱寤�
-    public final static String UNI_EVENT_HOME_EDIT = "pages/powerStation/powerStationEdit";//浣忓畢銆愮數绔欍�戠紪杈�
-    public final static String UNI_EVENT_HOME_DETAILS = "pages/powerStationDetail/index";//浣忓畢銆愮數绔欍�戣鎯�
-//    public final static String UNI_EVENT_Home_DEl = "del";//浣忓畢銆愮數绔欍�戝垹闄�
+    public final static String UNI_EVENT_OPEN_HOME_CREATION = "pages/powerStation/powerStationCreate";//浣忓畢銆愮數绔欍�戝垱寤�
+    public final static String UNI_EVENT_OPEN_HOME_EDIT = "pages/powerStation/powerStationEdit";//浣忓畢銆愮數绔欍�戠紪杈�
+    public final static String UNI_EVENT_OPEN_HOME_DETAILS = "pages/powerStationDetail/index";//浣忓畢銆愮數绔欍�戣鎯�
+    public final static String UNI_EVENT_OPEN_HOME_DEl = "del";//浣忓畢銆愮數绔欍�戝垹闄�
     /*********璁惧妯″潡*********/
     //璁惧妯″潡鎵撳紑椤甸潰鍏ㄨ矾寰�
 
@@ -122,20 +125,6 @@
 
         public void setPath(String path) {
             this.path = path;
-        }
-
-        /**
-         * 褰撳墠瀵硅薄杞� JSONObject
-         *
-         * @return JSONObject
-         */
-        public JSONObject getJSONObject() {
-            try {
-                String json = new Gson().toJson(this);
-                return new JSONObject(json);
-            } catch (Exception e) {
-                return new JSONObject();
-            }
         }
 
 
diff --git a/app/src/main/java/com/hdl/photovoltaic/utils/WifiUtils.java b/app/src/main/java/com/hdl/photovoltaic/utils/WifiUtils.java
new file mode 100644
index 0000000..f826573
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/utils/WifiUtils.java
@@ -0,0 +1,314 @@
+package com.hdl.photovoltaic.utils;
+
+
+import android.Manifest;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.net.wifi.ScanResult;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
+import android.os.SystemClock;
+import android.util.Log;
+
+import androidx.core.app.ActivityCompat;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+public class WifiUtils {
+
+
+    public WifiManager mWifiManager;
+    public WifiManager.WifiLock mWifiLock;
+
+    public Context mContext;
+
+    public WifiUtils(Context context) {
+        this.mContext = context;
+        mWifiManager = (WifiManager) this.mContext.getSystemService(Context.WIFI_SERVICE);
+    }
+
+    /**
+     * 鑾峰彇wifi-ssid鍚嶇О
+     *
+     * @return 杩斿洖ssid鍚嶇О
+     */
+    public String getCurrentConnectWifiSsid() {
+        WifiInfo wifiInfo = this.getCurrentConnectWifiInfo();
+        return wifiInfo.getSSID().replace("\"", "");
+    }
+
+    /**
+     * 鑾峰彇褰撳墠杩炴帴鐨剋ifi
+     *
+     * @return wifi淇℃伅
+     */
+    public WifiInfo getCurrentConnectWifiInfo() {
+        return (mWifiManager == null) ? null : mWifiManager.getConnectionInfo();
+    }
+
+    /**
+     * 妫�娴媤ifi鐘舵��
+     * WIFI_STATE_DISABLED  0 姝e湪鍏抽棴
+     * WIFI_STATE_DISABLED 1 宸茬粡鍏抽棴
+     * WIFI_STATE_ENABLING 2 姝e湪鎵撳紑
+     * WIFI_STATE_ENABLED 3 宸茬粡鎵撳紑
+     * WIFI_STATE_UNKNOWN 4 鏈煡
+     *
+     * @return -
+     */
+    public int checkWifiState() {
+        return mWifiManager.getWifiState();
+    }
+
+    //鎵撳紑wifi
+    public void openWifiEnabled() {
+        if (mWifiManager != null) {
+            mWifiManager.setWifiEnabled(true);
+        }
+    }
+
+    //鍏抽棴wifi
+    public void colseWifiEnable() {
+        if (mWifiManager != null) {
+            mWifiManager.setWifiEnabled(false);
+        }
+    }
+
+    //鑾峰彇涓�涓猈IFILock
+    public void crateWifiLock() {
+        if (mWifiManager != null) {
+            mWifiLock = mWifiManager.createWifiLock("Test");
+        }
+    }
+
+    //閿佸畾wifi
+    public void lockWifi() {
+        mWifiLock.acquire();
+    }
+
+    //閲婃斁wifiLock
+    public void releaseWifiLock() {
+        if (mWifiLock.isHeld()) {
+            mWifiLock.release();
+        }
+    }
+
+    //鑾峰彇鎵弿缁撴灉
+    public List<ScanResult> getScanResult() {
+        List<ScanResult> results = new ArrayList<>();
+        try {
+            if (mWifiManager != null) {
+//                mWifiManager.startScan();
+//                SystemClock.sleep(1000);
+                results = mWifiManager.getScanResults();
+            }
+        } catch (Exception ex) {
+            Log.d("WifiUtils", ex.getMessage());
+        }
+        return results;
+    }
+
+    //鑾峰彇宸茬粡閰嶇疆濂界殑缃戠粶杩炴帴
+    public List<WifiConfiguration> getConfigWifiInfo() {
+        List<WifiConfiguration> configInfo = new ArrayList<>();
+        if (mWifiManager != null) {
+            mWifiManager.startScan();
+            SystemClock.sleep(1000);
+            if (ActivityCompat.checkSelfPermission(this.mContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
+                // TODO: Consider calling
+                //    ActivityCompat#requestPermissions
+                // here to request the missing permissions, and then overriding
+                //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
+                //                                          int[] grantResults)
+                // to handle the case where the user grants the permission. See the documentation
+                // for ActivityCompat#requestPermissions for more details.
+                return configInfo;
+            }
+            configInfo = mWifiManager.getConfiguredNetworks();
+        }
+        return configInfo;
+    }
+
+
+    //鏂紑鎸囧畾鐨剋ifi
+    public void disconnectWifi(int netid) {
+        if (mWifiManager != null) {
+            mWifiManager.disableNetwork(netid);
+            mWifiManager.disconnect();
+        }
+    }
+
+    /**
+     * 杩炴帴鍒扮壒瀹歐iFi
+     *
+     * @param SSID     SSID
+     * @param password 瀵嗙爜
+     * @param type     鍔犲瘑绫诲瀷 1.娌℃湁瀵嗙爜 2.鐢╳ep鍔犲瘑 3.鐢╳pa鍔犲瘑
+     */
+    public boolean connectWiFi(String SSID, String password, int type) {
+        int wcgID = mWifiManager.addNetwork(createConfig(SSID, password, type));
+        return mWifiManager.enableNetwork(wcgID, true);
+    }
+
+    //鑾峰彇涓�涓獁ifi鐨勯厤缃俊鎭�
+    private WifiConfiguration createConfig(String SSID, String password, int type) {
+        WifiConfiguration config = new WifiConfiguration();
+        config.allowedAuthAlgorithms.clear();
+        config.allowedGroupCiphers.clear();
+        config.allowedKeyManagement.clear();
+        config.allowedPairwiseCiphers.clear();
+        config.allowedProtocols.clear();
+        config.SSID = "\"" + SSID + "\"";
+        // 濡傛灉宸茬粡杩炴帴杩嘩iFi锛岀Щ闄ゆ帀
+        WifiConfiguration tempConfig = isExsits(SSID);
+        if (tempConfig != null) {
+            mWifiManager.removeNetwork(tempConfig.networkId);
+        }
+        if (type == 1) {
+            config.wepKeys[0] = "";
+            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
+            config.wepTxKeyIndex = 0;
+        }
+        if (type == 2) {
+            config.hiddenSSID = true;
+            config.wepKeys[0] = "\"" + password + "\"";
+            config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED);
+            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
+            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
+            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
+            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
+            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
+            config.wepTxKeyIndex = 0;
+        }
+        if (type == 3) {
+            config.preSharedKey = "\"" + password + "\"";
+            config.hiddenSSID = true;
+            config.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
+            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
+            config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
+            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
+            config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
+            config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
+            config.status = WifiConfiguration.Status.ENABLED;
+        }
+        return config;
+    }
+
+    // 鍒ゆ柇褰撳墠SSID鏄惁宸茬粡杩炴帴杩�
+    private WifiConfiguration isExsits(String SSID) {
+        List<WifiConfiguration> existingConfigs = mWifiManager.getConfiguredNetworks();
+        if (existingConfigs == null) return null;
+        for (WifiConfiguration existingConfig : existingConfigs) {
+            if (existingConfig.SSID.equals("\"" + SSID + "\"")) {
+                return existingConfig;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 鑾峰彇闄勮繎wifi鍒楄〃
+     * 娉ㄦ剰:鑷繁瀹氫箟wifi瀵硅薄;鍘熺敓杩斿洖wifi璋冪敤杩欎釜getScanResult()鏂规硶
+     *
+     * @return -
+     */
+    public List<MyWifiInfo> getCustomWifiDeviceInfo() {
+        List<ScanResult> scanResults = getScanResult();//鎼滅储鍒扮殑璁惧鍒楄〃
+        List<ScanResult> newScanResultList = new ArrayList<>();
+        for (ScanResult scanResult : scanResults) {
+            int position = getItemPosition(newScanResultList, scanResult);
+            if (position != -1) {
+                if (newScanResultList.get(position).level < scanResult.level) {
+                    newScanResultList.remove(position);
+                    newScanResultList.add(position, scanResult);
+                }
+            } else {
+                newScanResultList.add(scanResult);
+            }
+        }
+        List<MyWifiInfo> wifiList = new ArrayList<>();
+        for (int i = 0; i < newScanResultList.size(); i++) {
+            MyWifiInfo info = new MyWifiInfo();
+            info.setSSID(newScanResultList.get(i).SSID);
+            info.setLevel(newScanResultList.get(i).level);
+            info.setBSSID(newScanResultList.get(i).BSSID);
+
+            wifiList.add(info);
+        }
+        return wifiList;
+        /*
+         * wifi RSSI鐨勭瓑绾у垝鍒嗗涓嬶細
+         *
+         * [-126, -88) 鎴栬�� [156, 168) 涓� 0 鏍�
+         * [-88, -78) 鎴栬�� [168, 178) 涓� 1 鏍�
+         * [-78, -67) 鎴栬�� [178, 189) 涓� 2 鏍�
+         * [-67, -55) 鎴栬�� [189, 200) 涓� 3 鏍�
+         * [-55, 0] 鎴栬�� 涓� 4 鏍�
+         */
+    }
+
+    /**
+     * 杩斿洖item鍦╨ist涓殑浣嶇疆
+     */
+    private int getItemPosition(List<ScanResult> list, ScanResult item) {
+        for (int i = 0; i < list.size(); i++) {
+            if (item.SSID.equals(list.get(i).SSID)) {
+                return i;
+            }
+        }
+        return -1;
+    }
+
+
+    static class MyWifiInfo {
+        /**
+         * Wi-Fi鍚嶇О
+         */
+        private String SSID;
+        /**
+         * 淇″彿寮哄害
+         */
+        private int level;
+        private String BSSID;
+
+        public String getSSID() {
+            return SSID == null ? "" : SSID;
+        }
+
+        public void setSSID(String SSID) {
+            this.SSID = SSID;
+        }
+
+        public int getLevel() {
+            return level;
+        }
+
+        public void setLevel(int level) {
+            this.level = level;
+        }
+
+        public String getBSSID() {
+            return BSSID == null ? "" : BSSID;
+        }
+
+        public void setBSSID(String BSSID) {
+            this.BSSID = BSSID;
+        }
+
+        private int networkId;
+
+        public int getNetworkId() {
+            return networkId;
+        }
+
+        public void setNetworkId(int networkId) {
+            this.networkId = networkId;
+        }
+    }
+}
+
+
diff --git a/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationDialog.java b/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationDialog.java
index 60e194e..b12b44a 100644
--- a/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationDialog.java
+++ b/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationDialog.java
@@ -16,7 +16,7 @@
  */
 public class ConfirmationDialog extends Dialog {
     public ConfirmationDialog(@NonNull Context context) {
-        super(context, R.style.Custom_AlertDialog);
+        super(context, R.style.Custom_Dialog);
         this.mContext = context;
     }
 
diff --git a/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationExceptionDialog.java b/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationExceptionDialog.java
new file mode 100644
index 0000000..e3737a2
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationExceptionDialog.java
@@ -0,0 +1,85 @@
+package com.hdl.photovoltaic.widget;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.content.res.AppCompatResources;
+
+import com.hdl.photovoltaic.R;
+import com.hdl.photovoltaic.databinding.LoadingExceptionLogBinding;
+
+/**
+ * 寮傚父寮圭獥
+ */
+public class ConfirmationExceptionDialog extends Dialog {
+
+    private LoadingExceptionLogBinding viewBinding;
+    private final Context mContext;
+    private String contentStr;
+
+    public ConfirmationExceptionDialog(@NonNull Context context) {
+        super(context, R.style.Custom_Dialog);
+        mContext = context;
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        viewBinding = LoadingExceptionLogBinding.inflate(getLayoutInflater());
+        setContentView(viewBinding.getRoot());
+//        Window window = getWindow();
+//        window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
+
+//        setCancelable(true);//绯荤粺鍚庨��鍙互鍙栨秷
+        //绌虹櫧澶勪笉鑳藉彇娑堝姩鐢�
+        setCanceledOnTouchOutside(false);
+        //鍒濆鍖栫晫闈㈡帶浠�
+        initView();
+        //鍒濆鍖栫晫闈㈡暟鎹�
+        initData();
+        //鍒濆鍖栫晫闈㈡帶浠剁殑浜嬩欢
+        initEvent();
+
+    }
+
+    /**
+     * 鑷畾涔�"鍐呭"鏂囨湰
+     *
+     * @param content 鍐呭
+     */
+    public void setContent(String content) {
+        if (TextUtils.isEmpty(content)) {
+            return;
+        }
+        contentStr = content;
+        if (viewBinding != null) {
+            viewBinding.loadingExceptionTv.setText(content);
+        }
+
+    }
+
+    private void initView() {
+        viewBinding.toolbarTopExceptionRl.topLeftIv.setImageDrawable(AppCompatResources.getDrawable(mContext, R.drawable.back));
+        viewBinding.toolbarTopExceptionRl.topTitleTv.setText("鏃ュ織璇︾粏");
+        viewBinding.toolbarTopExceptionRl.topBarView.setBackgroundColor(mContext.getColor(R.color.text_245EC3));
+        viewBinding.loadingExceptionTv.setText(contentStr == null ? "" : contentStr);
+    }
+
+    private void initEvent() {
+        viewBinding.toolbarTopExceptionRl.topBackBtn.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                dismiss();
+            }
+        });
+    }
+
+    private void initData() {
+    }
+}
diff --git a/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationInputDialog.java b/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationInputDialog.java
index 27ee316..d57aef4 100644
--- a/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationInputDialog.java
+++ b/app/src/main/java/com/hdl/photovoltaic/widget/ConfirmationInputDialog.java
@@ -23,7 +23,7 @@
 public class ConfirmationInputDialog extends Dialog {
 
     public ConfirmationInputDialog(@NonNull Context context) {
-        super(context, R.style.Custom_AlertDialog);
+        super(context, R.style.Custom_Dialog);
         this.mContext = context;
     }
 
diff --git a/app/src/main/res/layout/loading_exception_log.xml b/app/src/main/res/layout/loading_exception_log.xml
index 77d9ef6..122a48c 100644
--- a/app/src/main/res/layout/loading_exception_log.xml
+++ b/app/src/main/res/layout/loading_exception_log.xml
@@ -1,6 +1,62 @@
 <?xml version="1.0" encoding="utf-8"?>
 <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    android:background="@color/text_FFFFFFFF">
+
+    <include
+        android:id="@+id/toolbar_top_exception_rl"
+        layout="@layout/toolbar_top_view_44" />
+
+    <!--    <RelativeLayout-->
+    <!--        android:id="@+id/loading_header_el"-->
+    <!--        android:layout_width="match_parent"-->
+    <!--        android:layout_height="@dimen/dp_16"-->
+    <!--        app:layout_constraintEnd_toEndOf="parent"-->
+    <!--        app:layout_constraintStart_toStartOf="parent"-->
+    <!--        app:layout_constraintTop_toBottomOf="@+id/toolbar_top_exception_rl">-->
+
+    <!--        <TextView-->
+    <!--            android:id="@+id/loading_top_title_tv"-->
+    <!--            android:layout_width="wrap_content"-->
+    <!--            android:layout_height="@dimen/dp_16"-->
+    <!--            android:layout_marginStart="@dimen/dp_5"-->
+    <!--            android:layout_marginBottom="@dimen/dp_5"-->
+    <!--            android:text="鎴浘鍙嶉"-->
+    <!--            android:textAlignment="textStart"-->
+    <!--            android:textColor="@color/text_D34545"-->
+    <!--            android:textIsSelectable="true" />-->
+
+    <!--    </RelativeLayout>-->
+
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/toolbar_top_exception_rl">
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="0dp">
+            <!--鏄剧ず寮傚父鍫嗘爤淇℃伅-->
+            <TextView
+                android:id="@+id/loading_exception_tv"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_marginStart="@dimen/dp_5"
+                android:layout_marginBottom="@dimen/dp_5"
+                android:gravity="start|center"
+                android:text="鏄剧ず寮傚父鍫嗘爤淇℃伅"
+                android:textAlignment="textStart"
+                android:textColor="@color/text_030D1C"
+                android:textIsSelectable="true" />
+
+        </RelativeLayout>
+
+    </ScrollView>
+
 
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/toolbar_top_view_44.xml b/app/src/main/res/layout/toolbar_top_view_44.xml
index 72c0247..6cc1f1c 100644
--- a/app/src/main/res/layout/toolbar_top_view_44.xml
+++ b/app/src/main/res/layout/toolbar_top_view_44.xml
@@ -14,6 +14,7 @@
         android:orientation="horizontal">
 
         <ImageView
+            android:id="@+id/top_left_iv"
             android:layout_width="@dimen/dp_24"
             android:layout_height="@dimen/dp_24"
             android:layout_gravity="center"
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 765e997..d3b65b6 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -29,7 +29,7 @@
         <item name="fullscreenTextColor">@color/light_blue_A200</item>
     </style>
 
-    <style name="Custom_AlertDialog">
+    <style name="Custom_Dialog">
         <!--鑳屾櫙棰滆壊鍙婂拰閫忔槑绋嬪害-->
         <item name="android:windowBackground">@android:color/transparent</item>
         <!--鏄惁鍘婚櫎鏍囬 鎸嘾ialog寮规鏍囬-->

--
Gitblit v1.8.0