app/build.gradle | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/libs/uniMPSDK-V2-release.aar | 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/libs/uniapp-v8-release.aar | 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/hdl/photovoltaic/HDLApp.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/hdl/photovoltaic/internet/MqttClient.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/hdl/photovoltaic/other/HdlThreadLogic.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMPSDKManager.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/hdl/photovoltaic/utils/SharedPreUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/values/strings.xml | ●●●●● 补丁 | 查看 | 原始文档 | 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.aarBinary files differ
app/libs/uniapp-v8-release.aarBinary 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>