diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 7d7ec2e..245a82c 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 7c7f635..3378229 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -5,7 +5,7 @@ - + diff --git a/app/src/main/java/qianmu/container/activity/BaseActivity.java b/app/src/main/java/qianmu/container/activity/BaseActivity.java index f0bac26..3078e18 100644 --- a/app/src/main/java/qianmu/container/activity/BaseActivity.java +++ b/app/src/main/java/qianmu/container/activity/BaseActivity.java @@ -315,7 +315,7 @@ public abstract class BaseActivity extends AppCompatActivity { stopService(new Intent(this, MusicService.class));// 背景音乐 } try { - Thread.sleep(1000); + Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } diff --git a/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java b/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java index 0676725..73cd47d 100644 --- a/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java +++ b/app/src/main/java/qianmu/container/activity/H5/WebViewActivity.java @@ -216,7 +216,7 @@ public class WebViewActivity extends BaseActivity { // 适配HTTPS/HTTP混合内容 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_COMPATIBILITY_MODE); + webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); } //加载web @@ -603,8 +603,10 @@ public class WebViewActivity extends BaseActivity { }else { Url = H5Data.getH5Url(); } - binding.web.clearCache(true); - binding.web.loadUrl(Url); + if(binding.web != null && !StringUtil.isEmpty(Url)){ + binding.web.clearCache(true); + binding.web.loadUrl(Url); + } ToastUtils.showToast("应用更新成功"); break; diff --git a/app/src/main/java/qianmu/container/activity/program/MyPresentation.java b/app/src/main/java/qianmu/container/activity/program/MyPresentation.java index 174e631..044f40a 100644 --- a/app/src/main/java/qianmu/container/activity/program/MyPresentation.java +++ b/app/src/main/java/qianmu/container/activity/program/MyPresentation.java @@ -27,7 +27,9 @@ import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.VideoView; - +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; import androidx.annotation.NonNull; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -62,6 +64,7 @@ import qianmu.container.data.ScreenSaverData; import qianmu.container.entity.FacilitiesBean; import qianmu.container.entity.InterFaceBean; import qianmu.container.entity.MapDataListBean; +import qianmu.container.entity.MessageEvent; import qianmu.container.entity.NewProgramBean; import qianmu.container.entity.ResourceFileBean; import qianmu.container.entity.Resp; @@ -1289,7 +1292,7 @@ class MyPresentation extends Presentation { super.onCreate(savedInstanceState); setContentView(R.layout.presentation); initView(); - + EventBus.getDefault().register(this); } CustomerVideoView videoView2; @@ -3793,6 +3796,23 @@ class MyPresentation extends Presentation { class MyWebViewClient extends WebViewClient { + } + @Subscribe(threadMode = ThreadMode.MAIN) + public void onMessageEvent(MessageEvent message) { + if (message != null){ + switch (message.getCode()) { + case Constant.ACTION_UPDATE_WEBVIEW://刷新webView + if (webList != null && !webList.isEmpty()) { + for (WebView webView : webList) { + if (webView != null) { + webView.clearCache(true); + webView.loadUrl(webView.getUrl()); + } + } + } + break; + } + } } /** * 添加水牌 diff --git a/app/src/main/java/qianmu/container/activity/program/ViewScreenSaver.java b/app/src/main/java/qianmu/container/activity/program/ViewScreenSaver.java index 2d36875..19dc38a 100644 --- a/app/src/main/java/qianmu/container/activity/program/ViewScreenSaver.java +++ b/app/src/main/java/qianmu/container/activity/program/ViewScreenSaver.java @@ -29,7 +29,9 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; - +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; import androidx.annotation.NonNull; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -68,6 +70,7 @@ import java.util.TimerTask; import cz.msebera.android.httpclient.Header; import okhttp3.MediaType; import okhttp3.RequestBody; +import qianmu.container.R; import qianmu.container.activity.H5.CoreService; import qianmu.container.activity.H5.UpdateFileActivity; import qianmu.container.activity.ViewBase; @@ -1300,7 +1303,7 @@ public class ViewScreenSaver extends ViewBase { protected void initView() { width = DeviceUtil.screenWidth((Activity) context); height = DeviceUtil.screenHeight((Activity) context); - + EventBus.getDefault().register(this); } public void setData(List data) { @@ -3868,6 +3871,24 @@ public class ViewScreenSaver extends ViewBase { class MyWebViewClient extends WebViewClient { } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onMessageEvent(MessageEvent message) { + if (message != null){ + switch (message.getCode()) { + case Constant.ACTION_UPDATE_WEBVIEW://刷新webView + if (webList != null && !webList.isEmpty()) { + for (WebView webView : webList) { + if (webView != null) { + webView.clearCache(true); + webView.loadUrl(webView.getUrl()); + } + } + } + break; + } + } + } /** * 添加水牌 * */ diff --git a/app/src/main/java/qianmu/container/app/MyApplication.java b/app/src/main/java/qianmu/container/app/MyApplication.java index 8d77fca..b8f3c57 100644 --- a/app/src/main/java/qianmu/container/app/MyApplication.java +++ b/app/src/main/java/qianmu/container/app/MyApplication.java @@ -258,15 +258,42 @@ public class MyApplication extends Application { MyApplication.getInstance().dateTimeFormat.format(new Date(timeMillis)), ":\n", throwable.getMessage(), "\n", sw.toString()); LoggerUtil.e("APP崩溃", errorLog); + if (isSystemExceptionInternal(throwable)) { + try { + Thread.sleep(5000); + SignWayUtil.reboot(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + return; + } restartApp(); }); } + private boolean isSystemExceptionInternal(Throwable throwable) { + String className = throwable.getClass().getName(); + String message = throwable.getMessage(); + + // 检查常见的系统异常 + return className.contains("DeadSystemException") || + className.contains("DeadObjectException") || + className.contains("RemoteException") || + className.contains("TransactionTooLargeException") || + className.contains("NetworkOnMainThreadException") || + className.contains("BadParcelableException") || + className.contains("NullPointerException") && + (message != null && message.contains("on a null object reference")) || + className.contains("IllegalStateException") && + (message != null && (message.contains("Fragment not attached") || + message.contains("Activity has been destroyed"))); + } + /** * 重启软件 */ public void restartApp() { - LoggerUtil.e("MyApplication", "重启设备"); + LoggerUtil.e("MyApplication", "重启软件"); stopService(new Intent(this, ContainerService.class)); stopService(new Intent(this, MessengerService.class)); stopService(new Intent(this, CoreService.class)); @@ -276,12 +303,6 @@ public class MyApplication extends Application { // 开启背景音乐 stopService(new Intent(this, MusicService.class));// 背景音乐 } - try { - Thread.sleep(6000); - SignWayUtil.reboot(); - } catch (InterruptedException e) { - e.printStackTrace(); - } ProcessPhoenix.triggerRebirth(this); } diff --git a/app/src/main/java/qianmu/container/mqtt/MQTTService.java b/app/src/main/java/qianmu/container/mqtt/MQTTService.java index 057ff6a..14a1df7 100644 --- a/app/src/main/java/qianmu/container/mqtt/MQTTService.java +++ b/app/src/main/java/qianmu/container/mqtt/MQTTService.java @@ -276,7 +276,6 @@ public class MQTTService extends Service { // 订阅myTopic话题 client.subscribe(myTopic,2); sendOnline(); - connectTime = System.currentTimeMillis(); if(Math.abs(connectTime-connectionLostTime)>3600000){ //连接时间与连接失败时间相差60分钟,连接上时自动拉取最新节目 @@ -287,6 +286,10 @@ public class MQTTService extends Service { } catch (MqttException e) { e.printStackTrace(); } + if ("信发".equals(DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE)) + || "双面屏".equals(DeviceData.getDeviceInfo(DeviceData.HINT_DEVICE_TYPE))){ + EventBus.getDefault().post(new MessageEvent(Constant.ACTION_UPDATE_WEBVIEW)); + } } @Override