| | |
| | | import androidx.fragment.app.Fragment; |
| | | import androidx.fragment.app.FragmentManager; |
| | | import androidx.fragment.app.FragmentTransaction; |
| | | import androidx.lifecycle.Lifecycle; |
| | | |
| | | import android.Manifest; |
| | | import android.content.Context; |
| | |
| | | import android.view.View; |
| | | import android.widget.TextView; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.google.gson.Gson; |
| | | import com.google.gson.reflect.TypeToken; |
| | | import com.hdl.linkpm.sdk.core.exception.HDLException; |
| | |
| | | import com.hdl.photovoltaic.other.HdlMessageLogic; |
| | | import com.hdl.photovoltaic.other.HdlMqttLogic; |
| | | import com.hdl.photovoltaic.other.HdlOtaLogic; |
| | | import com.hdl.photovoltaic.other.HdlPushLogic; |
| | | import com.hdl.photovoltaic.other.HdlResidenceLogic; |
| | | import com.hdl.photovoltaic.other.HdlThreadLogic; |
| | | import com.hdl.photovoltaic.other.HdlUniLogic; |
| | | import com.hdl.photovoltaic.push.PushMessageInfoBean; |
| | | import com.hdl.photovoltaic.ui.bean.DeviceRemoteInfo; |
| | | import com.hdl.photovoltaic.ui.bean.MessageBean; |
| | | import com.hdl.photovoltaic.ui.bean.OidBean; |
| | | import com.hdl.photovoltaic.ui.bean.UnCountBean; |
| | | import com.hdl.photovoltaic.ui.home.HomePageFragment; |
| | | import com.hdl.photovoltaic.ui.me.MeFragment; |
| | | import com.hdl.photovoltaic.ui.message.MessageFragment; |
| | | import com.hdl.photovoltaic.ui.message.MessageHouseFragment; |
| | | import com.hdl.photovoltaic.ui.message.MessageInfoActivity; |
| | | import com.hdl.photovoltaic.ui.powerstation.HouseAndDeviceFragment; |
| | | import com.hdl.photovoltaic.uni.HDLUniMP; |
| | | import com.hdl.photovoltaic.uni.HDLUniMPSDKManager; |
| | | import com.hdl.photovoltaic.utils.AppManagerUtils; |
| | | import com.hdl.photovoltaic.utils.FragmentUtils; |
| | | import com.hdl.photovoltaic.utils.GPSManagerUtils; |
| | | import com.hdl.photovoltaic.utils.PermissionUtils; |
| | | import com.hdl.photovoltaic.utils.SharedPreUtils; |
| | |
| | | import java.lang.reflect.Type; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | import cn.jpush.android.api.JPushInterface; |
| | | |
| | |
| | | this.registerAllTopicsListener(); |
| | | //初始化mqtt客户端 |
| | | this.initMqttClient(); |
| | | //上传极光注册ID到云端 |
| | | this.pushTokens(); |
| | | //点击极光通知栏消息进来 |
| | | this.clickJpushNotificationMessage(); |
| | | // //上传极光注册ID到云端 隐藏2025-11-21 11:52:27 |
| | | // this.pushTokens(); |
| | | //上传推动令牌到云端(谷歌FCM推送) |
| | | this.sendPushTokenToServer(UserConfigManage.getInstance().getPushToken()); |
| | | // //点击极光通知栏消息进来 |
| | | // this.clickJpushNotificationMessage(); |
| | | //点击通知栏消息进来 |
| | | this.OpenSpecifiedPage(getIntent(), "onBindView"); |
| | | //初始化权限 |
| | | this.requestPermissions(); |
| | | //读取消息未读数量 |
| | |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 点击通知栏消息进来 |
| | | */ |
| | | private void OpenSpecifiedPage(Intent intent, String tag) { |
| | | Log.d("==========", tag); |
| | | try { |
| | | String data = getIntentExpantData(intent); |
| | | if (TextUtils.isEmpty(data)) { |
| | | return; |
| | | } |
| | | PushMessageInfoBean pushMessageInfoBean = HdlPushLogic.getInstance().pushDataProcessing("", "", data); |
| | | if (TextUtils.isEmpty(pushMessageInfoBean.getMsgId())) { |
| | | return; |
| | | } |
| | | MessageBean messageBean = new MessageBean(); |
| | | messageBean.setMsgId(Long.valueOf(pushMessageInfoBean.getMsgId())); |
| | | Intent intentMessageInfoActivity = new Intent(); |
| | | intentMessageInfoActivity.setClass(_mActivity, MessageInfoActivity.class); |
| | | intentMessageInfoActivity.putExtra("messageBean", JSONObject.toJSONString(messageBean)); |
| | | startActivity(intentMessageInfoActivity); |
| | | this.clickNotificationMessageTab(); |
| | | if (null != HDLUniMPSDKManager.getInstance().getUniMP()) { |
| | | Log.d("HDLUniMPSDKManager.getInstance().getUniMP()", "HDLUniMPSDKManager.getInstance().getUniMP()"); |
| | | HDLUniMPSDKManager.getInstance().getUniMP().closeUniMP(); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | Log.d("错误", " " + e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 初始化Fragment |
| | |
| | | //碎片初始化 |
| | | HomePageFragment mHomePageFragment = new HomePageFragment(); |
| | | HouseAndDeviceFragment mHouseAndDeviceFragment = new HouseAndDeviceFragment(); |
| | | MessageFragment mMessageFragment = new MessageFragment(); |
| | | MessageHouseFragment mMessageHouseFragment = new MessageHouseFragment(); |
| | | MeFragment mMeFragment = new MeFragment(); |
| | | if (savedInstanceState != null) { |
| | | //“内存重启”时调用 获取“内存重启”时保存的索引下标 |
| | |
| | | } |
| | | fragmentList.add(mHomePageFragment); |
| | | fragmentList.add(mHouseAndDeviceFragment); |
| | | fragmentList.add(mMessageFragment); |
| | | fragmentList.add(mMessageHouseFragment); |
| | | fragmentList.add(mMeFragment); |
| | | this.showFragment(); |
| | | } |
| | |
| | | //启动页与mainActivity样式一样,这样启动页和mainActivity看上去是一个界面,目的是为了mainActivity遮住下一页; |
| | | // AppManagerUtils.getAppManager().finishActivity(StartActivity.class); |
| | | portConflictDialog(); |
| | | // Intent intent = new Intent(_mActivity, BPowerStationActivity.class); |
| | | // intent.setFlags(Intent.Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); |
| | | // intent.putExtra("skip", "skip");//里面判断有这个标识就跳转到消息中心界面 |
| | | // _mActivity.startActivity(intent); |
| | | //点击极光通知栏消息进来 |
| | | // this.clickJpushNotificationMessage(); |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | } |
| | | if (!TextUtils.isEmpty(registrationID)) { |
| | | UserConfigManage.getInstance().setRegistrationID(registrationID); |
| | | UserConfigManage.getInstance().Save(); |
| | | // UserConfigManage.getInstance().setRegistrationID(registrationID); |
| | | // UserConfigManage.getInstance().Save(); |
| | | String finalRegistrationID = registrationID; |
| | | HdlResidenceLogic.getInstance().pushAdd(new CloudCallBeak<String>() { |
| | | @Override |
| | | public void onSuccess(String pushId) { |
| | | |
| | | if (!TextUtils.isEmpty(pushId)) { |
| | | UserConfigManage.getInstance().setPushToken(finalRegistrationID); |
| | | UserConfigManage.getInstance().setPushId(pushId); |
| | | UserConfigManage.getInstance().Save(); |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 上传 token 到服务器 |
| | | * |
| | | * @param token 令牌 |
| | | */ |
| | | private void sendPushTokenToServer(final String token) { |
| | | if (TextUtils.isEmpty(token)) { |
| | | return; |
| | | } |
| | | HdlResidenceLogic.getInstance().pushAdd(new CloudCallBeak<String>() { |
| | | @Override |
| | | public void onSuccess(String pushId) { |
| | | HdlLogLogic.print("添加令牌到云端 PushToken:" + UserConfigManage.getInstance().getPushToken() + " pushId:" + pushId, true); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HdlLogLogic.print("添加令牌到云端失败 PushToken:" + UserConfigManage.getInstance().getPushToken() + " 错误:" + e.getMessage(), true); |
| | | } |
| | | }); |
| | | } |
| | |
| | | @Override |
| | | protected void onDestroy() { |
| | | super.onDestroy(); |
| | | Log.d("BPowerStationActivity", "onDestroy"); |
| | | HdlUniLogic.getInstance().checkRemoveOtherUniMPEventCallBack(); |
| | | //移除监听 |
| | | HDLLinkLocalSdk.getInstance().removeAllTopicsListener(allTopicsListener); |
| | |
| | | this.notificationSet(); |
| | | //ACCESS_FINE_LOCATION 允许使用GPS定位 |
| | | //ACCESS_COARSE_LOCATION 允许使用WIFI热点或基站来获取粗略的定位 |
| | | // String[] ary = PermissionUtils.checkPermission(_mActivity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}); |
| | | // if (ary.length > 0) { |
| | | // this.requestPermissions(ary, PermissionUtils.STATUS_SUCCESS); |
| | | // } else { |
| | | // locationUpdates(); |
| | | // } |
| | | String[] ary = PermissionUtils.checkPermission(_mActivity, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}); |
| | | if (ary.length > 0) { |
| | | this.requestPermissions(ary, PermissionUtils.STATUS_SUCCESS); |
| | | } else { |
| | | locationUpdates(); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | uniCallBackBaseBean.setData(linkResponse.getData()); |
| | | HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, uniCallBackBaseBean); |
| | | HdlLogLogic.print(linkResponse.getTopic() + new Gson().toJson(linkResponse.getData()), true); |
| | | // HdlDeviceLogic.getInstance().searchAllNetworkGateway(null);//逆变器wifi状态-重新搜索一下逆变器-重新更新连接状态 |
| | | } else if (linkResponse.getTopic().endsWith("/app/thing/event/appHomeRemoveRefresh/up")) { |
| | | String[] topicArray = linkResponse.getTopic().split("/"); |
| | | //住宅删除通知 |
| | |
| | | uniCallBackBaseBean.setData(topicArray[1]); |
| | | HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, uniCallBackBaseBean); |
| | | HdlLogLogic.print(linkResponse.getTopic() + new Gson().toJson(linkResponse.getData()), true); |
| | | } else if (linkResponse.getTopic().endsWith("/app/thing/event/appHomeDeliverRollbackRefresh/up")) { |
| | | //B端登录电站回滚时,收到回滚的事件时,发个通知给uniapp,uniapp刷新下电站的权限,调整下菜单栏的内容。 |
| | | String[] topicArray = linkResponse.getTopic().split("/"); |
| | | if (topicArray.length < 2) { |
| | | return; |
| | | } |
| | | final String HomeId = topicArray[2]; |
| | | HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean(); |
| | | uniCallBackBaseBean.setType(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_home_delivery_rollback); |
| | | uniCallBackBaseBean.setData(HomeId); |
| | | HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, uniCallBackBaseBean); |
| | | } else if (linkResponse.getTopic().endsWith("/app/thing/property/send")) { |
| | | //设备状态变更topic:/user/${homeId}/app/thing/property/send |
| | | if (linkResponse.getData() == null) { |
| | |
| | | return; |
| | | } |
| | | int index = -1; |
| | | List<GatewayBean> list = HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(UserConfigManage.getInstance().getHomeId(), null); |
| | | List<GatewayBean> list = HdlDeviceLogic.getInstance().getCurrentHomeGatewayList(UserConfigManage.getInstance().getHomeId()); |
| | | for (int i = 0; i < list.size(); i++) { |
| | | GatewayBean gatewayBean = list.get(i); |
| | | if (gatewayBean.getGatewayId().equals(topics[2])) { |
| | |
| | | bottomViewChangeOfStyle(); |
| | | showFragment(); |
| | | } |
| | | } else if (event.getTopic().contains(ConstantManage.refresh_push_token)) { |
| | | String token=event.getType(); |
| | | UserConfigManage.getInstance().setPushToken(token); |
| | | UserConfigManage.getInstance().Save(); |
| | | //pushToken更新 |
| | | sendPushTokenToServer(UserConfigManage.getInstance().getPushToken()); |
| | | } |
| | | } |
| | | |
| | |
| | | }); |
| | | } |
| | | |
| | | @Override |
| | | protected void onNewIntent(Intent intent) { |
| | | super.onNewIntent(intent); |
| | | //AndroidManifest.xml 需要添加启动模式android:launchMode="singleTask"才执行这个方法 |
| | | OpenSpecifiedPage(intent, "onNewIntent"); |
| | | } |
| | | |
| | | /** |
| | | * 点击极光通知栏消息进来 |
| | | * 点击通知栏消息进来,默认选择消息模块 |
| | | */ |
| | | private void clickJpushNotificationMessage() { |
| | | Intent intent = getIntent(); |
| | | if (intent != null) { |
| | | String key = intent.getStringExtra("skip"); |
| | | if (key != null) { |
| | | //触发消息点击事件 |
| | | viewBinding.myMessageBottomIl2.clickTv.performClick(); |
| | | } |
| | | } |
| | | private void clickNotificationMessageTab() { |
| | | //触发消息点击事件 |
| | | viewBinding.myMessageBottomIl2.clickTv.performClick(); |
| | | // if (currentFragmentIndex == 2) { |
| | | // return; |
| | | // } |
| | | // currentFragmentIndex = 2; |
| | | // bottomViewChangeOfStyle(); |
| | | // showFragment(); |
| | | // HdlCommonLogic.lowerTagType = LowerTagType.message; |
| | | // HdlCommonLogic.getInstance().postEventBusSticky(ConstantManage.homepage_title_tab_switch, HomepageTitleTabSwitch.message.toString()); |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 处理从通知点击带来的数据,这里获取数据,然后透传给主界面做处理 |
| | | * |
| | | * @return 返回附加数据 |
| | | */ |
| | | private String getIntentExpantData(Intent intent) { |
| | | try { |
| | | if (intent == null) { |
| | | return ""; |
| | | } |
| | | // 处理从通知点击带来的数据,这里获取数据,然后透传给主界面做处理 |
| | | if (intent.getExtras() != null) { |
| | | for (String key : intent.getExtras().keySet()) { |
| | | if (key.equals("pushData")) { |
| | | return Objects.requireNonNull(intent.getExtras().get(key)).toString(); |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | return ""; |
| | | } |
| | | return ""; |
| | | } |
| | | |
| | | |
| | | } |