wjc
2023-06-14 b171f6d0354b418ed5f56fdf5e0d9d9b32fb4254
2023年06月14日13:56:50

备份一下
5个文件已添加
5个文件已修改
734 ■■■■■ 已修改文件
app/build.gradle 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/libs/uniMPSDK-V2-release.aar 补丁 | 查看 | 原始文档 | blame | 历史
app/libs/uniapp-v8-release.aar 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/HDLApp.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/internet/MqttClient.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/other/HdlThreadLogic.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMPSDKManager.java 408 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/hdl/photovoltaic/utils/SharedPreUtils.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/values/strings.xml 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/build.gradle
@@ -33,6 +33,8 @@
dependencies {
    implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
    implementation 'androidx.appcompat:appcompat:1.3.0'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
@@ -47,4 +49,17 @@
    implementation 'com.hdl.hdlhttp:hxhttp:1.0.4'
    //********UniSDK必须添加的依赖 start********
    implementation "androidx.recyclerview:recyclerview:1.0.0"
    implementation 'com.alibaba:fastjson:1.2.66'
    implementation 'com.facebook.fresco:fresco:2.5.0'
    implementation 'com.facebook.fresco:animated-gif:2.5.0'
    implementation 'com.facebook.fresco:webpsupport:2.5.0'
    implementation 'com.facebook.fresco:animated-webp:2.5.0'
    implementation 'com.github.bumptech.glide:glide:4.9.0'
    implementation 'com.android.support:multidex:1.0.3'
    implementation 'androidx.webkit:webkit:1.3.0'
    //********UniSDK必须添加的依赖 end********
}
app/libs/uniMPSDK-V2-release.aar
Binary files differ
app/libs/uniapp-v8-release.aar
Binary files differ
app/src/main/java/com/hdl/photovoltaic/HDLApp.java
@@ -3,10 +3,21 @@
import android.app.Application;
import com.hdl.photovoltaic.other.HdlLogLogic;
import com.hdl.photovoltaic.uni.HDLUniMPSDKManager;
import com.hdl.photovoltaic.utils.SharedPreUtils;
import java.util.HashMap;
import java.util.Objects;
import io.dcloud.common.util.RuningAcitvityUtil;
import io.dcloud.feature.sdk.DCSDKInitConfig;
import io.dcloud.feature.sdk.DCUniMPSDK;
import io.dcloud.feature.sdk.Interface.IDCUniMPPreInitCallback;
public class HDLApp extends Application {
    //三方sdk初始化标识
    private Boolean isInitThirdSDK = false;
    //声明一个当前应用的实例
    private static HDLApp mHDLApp;
    //声明一个公共的信息映射,可当作全局变量使用;
@@ -45,4 +56,52 @@
        return "";
    }
    /**
     * 初始化三方相关SDK
     */
    public void initThirdSDK() {
        // 小程序进程
        if (RuningAcitvityUtil.getAppName(getBaseContext()).contains("unimp")) {
            return;
        }
        if (isInitThirdSDK) {
            return;
        }
        isInitThirdSDK = true;
//        //5.初始化Bugly
//        CrashReport.initCrashReport(this, Constant.BUGLY_APP_ID, true);
        //6.初始化DCUniMPSDK
        initDCUniMPSDK();
//        //7.初始化自定义IconToast
//        ToastUtils.getInstance().initIconToast(this);
//        //8.对fastjson进行设置,解决fastjosn转换成字符串时首字母大小写问题
//        TypeUtils.compatibleWithFieldName = true;
//        //9.初始化网络工具
//        NetWorkUtil.init(this);
//        //10.初始化极光推送
//        initJPush();
    }
    /**
     * 初始化UniMPSDK 小程序SDK
     */
    private void initDCUniMPSDK() {
        DCSDKInitConfig config = new DCSDKInitConfig.Builder()
                .setCapsule(false)//设置是否使用胶囊按钮
                .setEnableBackground(false)//开启后台运行
                .build();
        DCUniMPSDK.getInstance().initialize(this, config, new IDCUniMPPreInitCallback() {
            @Override
            public void onInitFinished(boolean b) {
                HdlLogLogic.print("unimp", "UniMPSDK 初始化完成----" + b);
            }
        });
        //初始化UniMPSDKManager
        HDLUniMPSDKManager.getInstance().init(HDLApp.getInstance());
    }
}
app/src/main/java/com/hdl/photovoltaic/internet/MqttClient.java
New file
@@ -0,0 +1,5 @@
package com.hdl.photovoltaic.internet;
public class MqttClient {
}
app/src/main/java/com/hdl/photovoltaic/other/HdlThreadLogic.java
@@ -61,6 +61,31 @@
    /**
     * 全局弹出框,系统默认Toast
     */
    public static void toast(final Context context, final String text) {
        handler.post(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
            }
        });
    }
    /**
     * 全局弹出框,系统默认Toast
     */
    public static void toast(final Context context, final int resId) {
        handler.post(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(context, resId, Toast.LENGTH_SHORT).show();
            }
        });
    }
    /**
     * @param e             异常信息类
     * @param context       上下文(不需要弹框填null)
     * @param showErrorMode 是否显示错误(不需要填null)
app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java
New file
@@ -0,0 +1,217 @@
package com.hdl.photovoltaic.uni;
import androidx.annotation.NonNull;
import java.io.Serializable;
/**
 * Created by jlchen on 12/15/21.
 * UniMP 原生和小程序交互相关配置参数
 */
public class HDLUniMP {
    public final static String UNI_APP_ID = "__UNI__F86DFCD";//调试宝wgt包小程序id
    /*********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";//自定义小程序关闭事件
    //get event 小程序发送到原生 加前缀:uni_
    public final static String UNI_EVENT_GetAppParams = "uni_GetAppParams";//获取APP应用信息
    public final static String UNI_EVENT_GetFloorDataEvent = "uni_GetFloorDataEvent";//获取楼层或者房屋信息
    public final static String UNI_EVENT_SaveFloorDataEvent = "uni_SaveFloorDataEvent";//新建或者编辑楼层或者房间事件
    public final static String UNI_EVENT_GetRoomDetailsEvent = "uni_GetRoomDetailsEvent";//获取房间详情:绑定的设备列表
    public final static String UNI_EVENT_SendLinkBindUid = "uni_SendLinkBindUid";//发送Link指令绑定房间
    public final static String UNI_EVENT_SendLinkDeleteUid = "uni_SendLinkDeleteUid";//发送Link指令解绑定房间
    public final static String UNI_EVENT_SendChangeGWName = "uni_SendChangeGWName";//发送网关备注名更改指令(link)
    public final static String UNI_EVENT_SendDisableToONPRO = "uni_SendDisableToONPRO";//onpro禁用指令(link)
    public final static String UNI_EVENT_SendIARCCFirmware = "uni_SendIARCCFirmware";//发送IARCC三方固件分类
    public final static String UNI_EVENT_SendReadACFirmwareVersion = "uni_SendReadACFirmwareVersion";//发送读取IRACC模块固件版本
    public final static String UNI_EVENT_SendUpgradeACNotification = "uni_SendUpgradeACNotification";//升级IRACC模块通知
    public final static String UNI_EVENT_SendUpgrade = "uni_SendUpgrade";//发送升级指令
    public final static String UNI_EVENT_SendFinish = "uni_SendFinish";//分包结束
    public final static String UNI_EVENT_SendOpenIRACC = "uni_SendOpenIRACC";//打开IRACC透传数
    public final static String UNI_EVENT_SendControlTestIRACC = "uni_SendControlTestIRACC";//IRACC控制测试
    public final static String UNI_EVENT_SendLinkBindRoom = "uni_SendLinkBindRoom";//发送Link指令绑定房间
    public final static String UNI_EVENT_SendLinkRename = "uni_SendLinkRename";//发送Link指令修改备注
    /**
     * 场景
     */
    public final static String UNI_EVENT_CreateScene = "uni_CreateScene";//发送Link指令创建场景
    public final static String UNI_EVENT_EditScene = "uni_EditScene";//发送Link指令编辑场景
    public final static String UNI_EVENT_GetSceneSid = "uni_GetSceneSid";//发送Link指令获取场景sid
    public final static String UNI_EVENT_GetSceneDetail = "uni_GetSceneDetail";//发送Link指令获取场景详情
    public final static String UNI_EVENT_GetRoomBindSidList = "uni_GetRoomBindSidList";//发送Link指令获取房屋关联场景设备表格
    public final static String UNI_EVENT_GetFunctionSidList = "uni_GetFunctionSidList";//发送Link指令获取回路sid
    public final static String UNI_EVENT_CONTROLSCENE = "uni_ControlScene";//执行场景
    public final static String UNI_EVENT_DeleteScene = "uni_DeleteScene";//发送Link指令删除场景
    public final static String UNI_EVENT_GatewayVersion = "uni_GatewayVersion";//获取网关版本 用于控制延时支持0.1s
    /**
     * 自动化
     */
    public final static String UNI_EVENT_GetLogicSid = "uni_GetLogicSid";//发送Link指令获取自动化sid
    public final static String UNI_EVENT_GetSceneList = "uni_GetSceneList";//发送Link指令获取场景列表
    public final static String UNI_EVENT_GetLogicList = "uni_GetLogicList";//发送Link指令获取自动化列表
    public final static String UNI_EVENT_CreateLogic = "uni_CreateLogic";//发送Link指令创建自动化  创建编辑同一个
    public final static String UNI_EVENT_GetLogicDetail = "uni_GetLogicDetail";//发送Link指令获取自动化详情
    /**
     * 网关驱动升级,设备固件升级
     */
    public final static String UNI_EVENT_GetOidList = "uni_GetOidList";//发送Link指令获取云端上Oid列表
    public final static String UNI_EVENT_GetGatewayDrivers = "uni_GetGatewayDrivers";//发送Link网关驱动列表获取
    public final static String UNI_EVENT_GetCloudGatewayDrivers = "uni_GetCloudGatewayDrivers";//发送Link指令云端的驱动分页列表
    public final static String UNI_EVENT_UpgradeGatewayDriver = "uni_UpgradeGatewayDriver";//发送Link指令网关驱动升级OTA命令下发
    public final static String UNI_EVENT_GetDeviceFirmwares = "uni_GetDeviceFirmwares";//发送Link指令获取设备固件列表获取
    public final static String UNI_EVENT_GetCloudDeviceFirmwares = "uni_GetCloudDeviceFirmwares";//发送Link指令云端的设备固件分页列表
    public final static String UNI_EVENT_UpgradeDeviceFirmware = "uni_UpgradeDeviceFirmware";//发送Link设备固件升级OTA命令下发
    /**
     * 安防
     */
    public final static String UNI_EVENT_GetSecuritySid = "uni_GetSecuritySid";//发送Link指令获取安防sid
    public final static String UNI_EVENT_GetSecurityList = "uni_GetSecurityList";//发送Link指令获取安防列表
    public final static String UNI_EVENT_CreateSecurity = "uni_CreateSecurity";//发送Link指令创建安防  创建编辑同一个
    public final static String UNI_EVENT_GetSecurityDetail = "uni_GetSecurityDetail";//发送Link指令获取安防详情
    public final static String UNI_EVENT_DeleteSecurity = "uni_DeleteSecurity";//发送Link指令删除安防
    /**
     * 模板
     */
    public final static String UNI_EVENT_UpdataTemplateData = "uni_UpdataTemplateData";//更新模板命令数据
    public final static String UNI_EVENT_GetLinkOidList = "uni_GetLinkOidList";//获取LinkOid列表
    public final static String UNI_EVENT_GetRoomBindList = "uni_GetRoomBindList";//获取RoomBind列表
    public final static String UNI_EVENT_GetDeviceLoopList = "uni_GetDeviceLoopList";//获取DeviceLoop列表
    public final static String UNI_EVENT_GetLinkFunctionList = "uni_GetLinkFunctionList";//获取LinkFunction列表
    public final static String UNI_EVENT_GetLinkSceneList = "uni_GetLinkSceneList";//获取LinkScene列表
    public final static String UNI_EVENT_GetDeviceList = "uni_GetDeviceList";//获取Device列表
    public final static String UNI_EVENT_GetRoomList = "uni_GetRoomList";//发送Link指令获取房屋列表
    public final static String UNI_EVENT_GetZigBeeDeviceInfo = "uni_GetZigBeeDeviceInfo";//获取ZigBee设备信息
    public final static String UNI_EVENT_GetAllDataSize = "uni_GetAllDataSize";//获取数据长度
    public final static String UNI_EVENT_GetMillimeterDeviceInfo = "uni_GetMillimeterDeviceInfo";//获取毫米波设备信息
    public final static String UNI_EVENT_SetMillimeterConfiguration = "uni_SetMillimeterConfiguration";//配置毫米波数据
    public final static String UNI_EVENT_GetMillimeterConfiguration = "uni_GetMillimeterConfiguration";//获取毫米波配置数据
    public final static String UNI_EVENT_MillimeterPositioning = "uni_MillimeterPositioning";//毫米波定位
    public final static String UNI_EVENT_EditMillimeter = "uni_EditMillimeter";//编辑毫米波
    public final static String UNI_EVENT_DeleteMillimeterDevice = "uni_DeleteMillimeterDevice";//删除毫米波设备
    public final static String UNI_EVENT_GetFunctionInfo = "uni_GetFunctionInfo";//获取link设备详情
    public final static String UNI_EVENT_GetLinkRoom = "uni_GetLinkRoom";//获取link房间列表
    public final static String UNI_EVENT_LinkPropertyToCloudControl = "uni_LinkPropertyToCloudControl";//link控制
    public final static String UNI_EVENT_LinkPropertyToGatewayControl = "uni_LinkPropertyToGatewayControl";//link控制
    public final static String UNI_EVENT_LinkDeviceNameEdit = "uni_LinkDeviceNameEdit";//获取link控制
    public final static String UNI_EVENT_ChangeDeviceImgVersion = "uni_ChangeDeviceImgVersion";//更改设备的固件版本
    /**
     * 红外宝
     */
    public final static String UNI_EVENT_GetIrTypeList = "uni_GetIrTypeList";//获取红外设备类型
    public final static String UNI_EVENT_GetIrBrandList = "uni_GetIrBrandList";//获取红外设备对应品牌
    public final static String UNI_EVENT_GetIrCodeList = "uni_GetIrCodeList";//获取红外设备对应品牌的具体码库
    public final static String UNI_EVENT_IrLocation = "uni_IrLocation";//红外宝定位
    public final static String UNI_EVENT_IrControlDelete = "uni_IrControlDelete";//红外宝遥控器删除
    public final static String UNI_EVENT_GetIrInfo = "uni_GetIrInfo";//获取红外设备link层数据
    public final static String UNI_EVENT_IrCodeTest = "uni_IrCodeTest";//红外宝试码
    public final static String UNI_EVENT_IrDeviceAdd = "uni_IrDeviceAdd";//红外宝遥控器添加
    public final static String UNI_EVENT_IrDeviceAddGetSid = "uni_IrDeviceAddGetSid";//红外宝遥控器sid
    public final static String UNI_EVENT_IrCodeStudy = "uni_IrCodeStudy";//红外宝自学码
    public final static String UNI_EVENT_IrCodeRemove = "uni_IrCodeRemove";//红外宝自学码删除
    public final static String UNI_EVENT_LinkDeviceControl = "uni_LinkDeviceControl";//link设备控制
    public final static String UNI_EVENT_LinkOtaDeviceUpgradeDown = "uni_LinkOtaDeviceUpgradeDown";//link模拟云端ota
    public final static String UNI_EVENT_IrDeviceListGet = "uni_IrDeviceListGet";//红外宝遥控器列表获取
    public final static String UNI_EVENT_GetGateWayDeviceInfo = "uni_GetGateWayDeviceInfo";//获取网关设备信息
    public final static String UNI_EVENT_SendZigBeePassthrough = "uni_SendZigBeePassthrough";//发送ZigBee透传指令
    /**
     * Zigbee透传数据全局回复
     */
    public final static String UNI_EVENT_ZigBeePassthrough = "uni_ZigBeePassthrough";
    /**
     * Zigbee状态数据透传
     */
    public final static String EVENT_DeviceStatusReportPassthrough = "DeviceStatusReportPassthrough";
    //send event 原生发送到小程序 加前缀:app_
//    public final static String UNI_APP_EVENT_UIDataEvent = "app_GetFloorDataEvent";//原生通知小程序 获取楼层或者房屋信息
    /*********UniMP PATH 各个小程序页面路径*********/
    //启动直达页面标识参数 (废弃)
    public final static String UNI_ACTION = "?action=redirect";
    //UniMP小程序 总路由页面 后面通过pathKey再分发路由跳转、小程序帮我们拼接?action=redirect
    public final static String UNI_PATH_MAIN = "pages/index/index?pathKey=";
    //添加楼层或者房间
    public final static String UNI_PATH_AddFloor = UNI_PATH_MAIN + "room";
    //查看房间详情
    public final static String UNI_PATH_RoomDetails = UNI_PATH_MAIN + "roomDetails";
    //查看网关信息
    public final static String UNI_PATH_GATEWAY = UNI_PATH_MAIN + "gateway";
    //查看毫米波信息
    public final static String UNI_PATH_MILLIMETER = UNI_PATH_MAIN + "Millimeter";
    //查看设备通用信息
    public final static String UNI_PATH_DEVICE = UNI_PATH_MAIN + "device_info";
    //Link数据全局回复
    public final static String UNI_EVENT_LinkPassthrough = "LinkPassthrough";
    //关闭进度条监听事件
    public final static String UNI_EVENT_Progress = "uni_CloseProgress";
    //查看吸顶式传感器设备信息
    public final static String UNI_PATH_CEILINGLIGHTSENSOR = UNI_PATH_MAIN + "ceilingLightSensor";
    public static class UniCallBackBaseBean implements Serializable {
        private String code = "-1";
        private String mes;
        private Object data;
        private String topic;
        public UniCallBackBaseBean(String code, String mes) {
            this.code = code;
            this.mes = mes;
        }
        public UniCallBackBaseBean() {
            this.code = "0";
            this.mes = "成功";
        }
        @NonNull
        public String getCode() {
            return code == null ? "" : code;
        }
        public void setCode(@NonNull String code) {
            this.code = code;
        }
        @NonNull
        public String getMes() {
            return mes == null ? "" : mes;
        }
        public void setMes(@NonNull String mes) {
            this.mes = mes;
        }
        public Object getData() {
            return data;
        }
        public void setData(Object data) {
            this.data = data;
        }
        public String getTopic() {
            return topic;
        }
        public void setTopic(String topic) {
            this.topic = topic;
        }
    }
}
app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMPSDKManager.java
New file
@@ -0,0 +1,408 @@
package com.hdl.photovoltaic.uni;
import android.app.Application;
import android.content.Context;
import android.os.Environment;
import android.text.TextUtils;
import com.google.gson.Gson;
import com.hdl.photovoltaic.HDLApp;
import com.hdl.photovoltaic.R;
import com.hdl.photovoltaic.config.AppConfigManage;
import com.hdl.photovoltaic.other.HdlLogLogic;
import com.hdl.photovoltaic.other.HdlThreadLogic;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.File;
import java.util.HashMap;
import io.dcloud.common.DHInterface.ICallBack;
import io.dcloud.feature.sdk.DCSDKInitConfig;
import io.dcloud.feature.sdk.DCUniMPSDK;
import io.dcloud.feature.sdk.Interface.IDCUniMPPreInitCallback;
import io.dcloud.feature.sdk.Interface.IOnUniMPEventCallBack;
import io.dcloud.feature.sdk.Interface.IUniMP;
import io.dcloud.feature.sdk.Interface.IUniMPOnCloseCallBack;
import io.dcloud.feature.unimp.DCUniMPJSCallback;
/**
 * Created by jlchen on 12/15/21.
 */
public class HDLUniMPSDKManager {
    private static final String TAG = "HDLUniMPSDKManager";
    /**
     * context
     */
    private Application mContext;
    private IUniMP uniMP;
    /**
     * unimp小程序实例缓存
     **/
    HashMap<String, IUniMP> mUniMPCaches = new HashMap<>();
    /**
     * 当前打开的小程序APPId
     */
    private String mCurrentAppId;
    /**
     * instance
     */
    private volatile static HDLUniMPSDKManager instance;
    /**
     * 获取当前对象
     *
     * @return HDLUniMPSDKManager
     */
    public static synchronized HDLUniMPSDKManager getInstance() {
        if (instance == null) {
            synchronized (HDLUniMPSDKManager.class) {
                if (instance == null) {
                    instance = new HDLUniMPSDKManager();
                }
            }
        }
        return instance;
    }
    /**
     * 反初始化
     */
    public void unInit() {
        mUniMPCaches.clear();
        this.mContext = null;
    }
    /**
     * 初始化
     *
     * @param ctx -
     */
    public void init(Application ctx) {
        this.mContext = ctx;
        registerCallBack();
    }
    /**
     * 移除相关回调监听
     */
    private void removeCallBack() {
        DCUniMPSDK.getInstance().setUniMPOnCloseCallBack(null);
        DCUniMPSDK.getInstance().setOnUniMPEventCallBack(null);
    }
    /**
     * 监听相关回调
     */
    private void registerCallBack() {
        //1.设置小程序被关闭事件监听
        DCUniMPSDK.getInstance().setUniMPOnCloseCallBack(new IUniMPOnCloseCallBack() {
            @Override
            public void onClose(String appid) {
                if (AppConfigManage.isDebug()) {
                    HdlLogLogic.print(TAG, "收到小程序通知  被关闭了");
                }
                //小程序被关闭需要对实例缓存删除操作
                if (mUniMPCaches.containsKey(appid)) {
                    mUniMPCaches.remove(appid);
                }
                //清空当前打开小程序记录
                if (appid.equals(mCurrentAppId)) {
                    mCurrentAppId = "";
                }
            }
        });
        //2.设置监听小程序发送给宿主的事件
        DCUniMPSDK.getInstance().setOnUniMPEventCallBack(new IOnUniMPEventCallBack() {
            @Override
            public void onUniMPEventReceive(String appid, String event, Object data, DCUniMPJSCallback callback) {
//                handelUniMPEventReceive(appid, event, data, callback);
                HdlLogLogic.print(TAG, "收到小程序通知    event=" + event);
                //暂时通过这个处理小程序同时多条相同的请求
                if (data == null) {
                    return;
                }
//                String key= MD5Utils.getMd5(event+data.toString());
//                if(UniAppMessageCacheUtil.getInstance().isExist(key))
//                {
//                    LogUtils.i("当前小程序数据短时间发送了多次");
//                    return;
//                }
//                UniAppMessageCacheUtil.getInstance().put(key,System.currentTimeMillis());
                //只处理一下统一处理的事件
                if (HDLUniMP.UNI_EVENT_GetAppParams.equals(event)) {
                    //回传数据给小程序
                    JSONObject params = getAppParams();
                    callback.invoke(params);
                    HdlLogLogic.print(TAG, "uni_GetAppParams callback:" + params.toString());
                } else {
                    //除了统一处理,剩余其它特定场景的事件通知
                    if (onOtherUniMPEventCallBack != null) {
                        onOtherUniMPEventCallBack.onOtherUniMPEventReceive(appid, event, data, callback);
                    }
                }
            }
        });
    }
    /**
     * 小程序向APP获取所需的配置参数
     *
     * @return -
     */
    private JSONObject getAppParams() {
        JSONObject mParams = new JSONObject();
        try {
            //回调告诉小程序要使用的语言
            mParams.put("language", "zh-Hans");
//            mParams.put("language", "en");//回调告诉小程序要使用的语言
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return mParams;
    }
    /**
     * 小程序是否初始化完成
     * 启动uni小程序,确保已初始化完毕再调用
     *
     * @return -
     */
    public Boolean isInitialize() {
        return DCUniMPSDK.getInstance().isInitialize();
    }
    /**
     * 检查是否存在应用资源,不存在则部署
     *
     * @param uniAppId -
     */
    public void checkUniMPResource(String uniAppId) {
        //2.不是第一次启动了,先判断wgt包之前有么有部署过
        if (!DCUniMPSDK.getInstance().isExistsApp(uniAppId)) {
            HdlLogLogic.print(TAG, "DCUni wgt之前还没部署过");
            //之前没部署过重新部署
            hdlReleaseAppResourceToRunPathWithAppid(uniAppId);
//            [self hdlReleaseAppResourceToRunPathWithAppid:uniAppId];
        } else {
            HdlLogLogic.print(TAG, "DCUni wgt已经部署过");
        }
    }
    /**
     * 将wgt应用资源包部署到运行路径中
     *
     * @param uniAppId -
     */
    public void hdlReleaseAppResourceToRunPathWithAppid(String uniAppId) {
        String wgtPath = mContext.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS) + "/" + uniAppId + ".wgt";
        boolean b = fileIsExists(wgtPath);
        if (b) {
            HdlLogLogic.print(TAG, "wgt包本地存在");
            DCUniMPSDK.getInstance().releaseWgtToRunPathFromePath(uniAppId, wgtPath, new ICallBack() {
                @Override
                public Object onCallBack(int code, Object pArgs) {
                    if (code == 1) {
                        //释放wgt完成
                    } else {
                        //释放wgt失败
                        HdlLogLogic.print(TAG, "资源释放失败");
                    }
                    return null;
                }
            });
        } else {
            HdlLogLogic.print(TAG, "wgt包本地不存在");
        }
    }
    /**
     * 判断文件是否存在
     *
     * @param strFile -
     * @return -
     */
    public static boolean fileIsExists(String strFile) {
        try {
            File f = new File(strFile);
            if (!f.exists()) {
                return false;
            }
        } catch (Exception e) {
            return false;
        }
        return true;
    }
    /**
     * 打开小程序
     *
     * @param uniAppId 小程序ID
     * @param path     指定路径
     *                 例:pages/component/scroll-view/scroll-view?a=1&b=2&c=3
     * @param callBack 监听小程序OtherUniMPEvent事件
     */
    public void openUniMP(String uniAppId, String path, IOnOtherUniMPEventCallBack callBack) {
        if (TextUtils.isEmpty(uniAppId)) {
            HdlThreadLogic.toast(mContext, "uni Id null");
            HdlLogLogic.print(TAG, "小程序ID 不能为空");
            return;
        }
        try {
            setOnOtherUniMPEventCallBack(callBack);
            uniMP = null;
            if (TextUtils.isEmpty(path)) {
                uniMP = DCUniMPSDK.getInstance().openUniMP(mContext, uniAppId);
            } else {
//                UniMPOpenConfiguration uniMPOpenConfiguration = new UniMPOpenConfiguration();
//                uniMPOpenConfiguration.path = path;
                uniMP = DCUniMPSDK.getInstance().openUniMP(mContext, uniAppId, path);
            }
            mCurrentAppId = uniAppId;//记录当前小程序
            mUniMPCaches.put(uniMP.getAppid(), uniMP);
        } catch (Exception e) {
            e.printStackTrace();
            HdlThreadLogic.toast(HDLApp.getInstance(), R.string.uni_open_error);
            initDCUniMPSDK(HDLApp.getInstance());
            HdlLogLogic.print(TAG, "打开失败" + e.getMessage());
        }
    }
    /**
     * 初始化UniMPSDK 小程序SDK
     */
    public void initDCUniMPSDK(Context mContext) {
        if (DCUniMPSDK.getInstance().isInitialize()) {
            return;
        }
        DCSDKInitConfig config = new DCSDKInitConfig.Builder()
                .setCapsule(false)//设置是否使用胶囊按钮
                .setEnableBackground(false)//开启后台运行
                .build();
        DCUniMPSDK.getInstance().initialize(mContext, config, new IDCUniMPPreInitCallback() {
            @Override
            public void onInitFinished(boolean b) {
                HdlLogLogic.print("unimp", "UniMPSDK 初始化完成----" + b);
            }
        });
        //初始化UniMPSDKManager
        HDLUniMPSDKManager.getInstance().init(HDLApp.getInstance());
    }
    public IUniMP getUniMP() {
        return uniMP;
    }
    /**
     * 打开小程序并传入参数
     *
     * @param uniAppId  小程序ID
     * @param arguments JSONObject arguments = new JSONObject();
     *                  arguments.put("MSG","Hello HDL");
     * @param callBack  监听小程序OtherUniMPEvent事件
     */
    public void openUniMP(String uniAppId, JSONObject arguments, IOnOtherUniMPEventCallBack callBack) {
        if (TextUtils.isEmpty(uniAppId)) {
            HdlLogLogic.print(TAG, "小程序ID 不能为空");
            return;
        }
        try {
            setOnOtherUniMPEventCallBack(callBack);
//            UniMPOpenConfiguration uniMPOpenConfiguration = new UniMPOpenConfiguration();
//            uniMPOpenConfiguration.extraData = arguments;
            uniMP = DCUniMPSDK.getInstance().openUniMP(mContext, uniAppId, arguments);
            mCurrentAppId = uniAppId;//记录当前小程序
            mUniMPCaches.put(uniMP.getAppid(), uniMP);
        } catch (Exception e) {
            e.printStackTrace();
            HdlLogLogic.print(TAG, "打开失败" + e.getMessage());
        }
    }
    /**
     * 原生向小程序发送通知事件
     * 注意:需要提前小程序在运行才可成功
     *
     * @param uniAppId 小程序指定
     * @param event    小程序指定主题
     * @param data     String或JSON
     */
    public void sendUniMPEvent(String uniAppId, String event, Object data) {
        if (mUniMPCaches.containsKey(uniAppId)) {
            if (mUniMPCaches.get(uniAppId) != null) {
                mUniMPCaches.get(uniAppId).sendUniMPEvent(event, data);
                HdlLogLogic.print(TAG, "发送通知成功:event:" + event + " data:" + new Gson().toJson(data));
            } else {
                HdlLogLogic.print(TAG, "发送失败,小程序对象为空:" + uniAppId);
            }
        } else {
            HdlLogLogic.print(TAG, "发送失败,找不到对应的小程序:" + uniAppId);
        }
    }
    /**
     * 原生向当前打开的小程序发送通知事件
     * 注意:需要提前小程序在运行才可成功
     *
     * @param event -
     * @param data  String或JSON
     */
    public void sendUniMPEventToCurrentOpenAppId(String event, Object data) {
        if (TextUtils.isEmpty(mCurrentAppId)) {
            HdlLogLogic.print(TAG, "当前没打开的小程序");
            return;
        }
        sendUniMPEvent(mCurrentAppId, event, data);
    }
    /**
     * 除了公共处理的其他Event
     */
    private IOnOtherUniMPEventCallBack onOtherUniMPEventCallBack;
    /**
     * IOnOtherUniMPEventCallBack
     */
    public interface IOnOtherUniMPEventCallBack {
        /**
         * 除了统一处理,剩余其它特定场景的事件通知
         *
         * @param appid    -
         * @param event    -
         * @param data     JSONObject com.alibaba.fastjson解析处理
         * @param callback callback.invoke(JSONObject) 用com.alibaba.fastjson
         */
        void onOtherUniMPEventReceive(String appid, String event, Object data, DCUniMPJSCallback callback);
    }
    public void setOnOtherUniMPEventCallBack(IOnOtherUniMPEventCallBack onOtherUniMPEventCallBack) {
        this.onOtherUniMPEventCallBack = onOtherUniMPEventCallBack;
        HdlLogLogic.print("onOtherUniMPEventCallBack", "set callback");
    }
    /**
     * 检测是否当前页面注册的callback,是的话则移除
     *
     * @param onOtherUniMPEventCallBack -
     */
    public void checkRemoveOtherUniMPEventCallBack(IOnOtherUniMPEventCallBack onOtherUniMPEventCallBack) {
        if (this.onOtherUniMPEventCallBack == onOtherUniMPEventCallBack) {
            this.onOtherUniMPEventCallBack = null;
            HdlLogLogic.print("onOtherUniMPEventCallBack", "remove callback");
        }
    }
}
app/src/main/java/com/hdl/photovoltaic/utils/SharedPreUtils.java
@@ -33,7 +33,7 @@
     * @param context 上下文
     * @return -value
     */
    public String getSharedPreferencesKey(String key, Context context) {
    public static String getSharedPreferencesKey(String key, Context context) {
        // 获取SharedPreferences对象,同时指定文件名称和访问权限
        SharedPreferences sp = context.getSharedPreferences("MyData", Context.MODE_PRIVATE);
        return sp.getString(key, "");
app/src/main/res/values/strings.xml
@@ -54,6 +54,9 @@
    <string name="me_设置">设置</string>
    <string name="me_关于">关于</string>
    <!--uin-->
    <string name="uni_open_error">页面初始化中 请等待5秒再点击</string>
    <!--弹框-->
    <string name="loading_取消">取消</string>
    <string name="loading_确认">确认</string>