瀏覽代碼

#CHANGE 收到设备重启指令时判断当前是否在通话中,若在通话中则等待重启,否则立即重启

weizhengliang 3 年之前
父節點
當前提交
d3fcb07181

+ 3 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constants.kt

@@ -71,6 +71,9 @@ class Constants {
         //设备是否有camera
         var supportCamera: Boolean = false
 
+        //延时重启app
+        var laterRestart: Boolean = false
+
         /**
          * TCP消息
          */

+ 11 - 0
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/activity/NurseHomeActivity.kt

@@ -582,6 +582,11 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter, ActivityNurs
                 } else {
                     view_title_layout_tv_point.setBackgroundResource(R.color.red_color)
                 }
+
+                //当前不在通话中且laterRestart=true则重启app
+                if (Constants.laterRestart && !DeviceChannel.calling) {
+                    AppUpdateHelper.restartApp(this@NurseHomeActivity)
+                }
             } else if (intent.action == Constants.HOOK_ON) {
                 Log.e(TAG,"手柄放下 ")
                 Constants.hookOn = true
@@ -1053,6 +1058,12 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter, ActivityNurs
                         if (Constants.part_id != -1) {
                             presenter.getSettingData(Constants.part_id)
                         }
+                    } else if (tcpModel.action == TcpAction.DeviceAction.DEVICE_REFRESH || tcpModel.action == TcpAction.DeviceAction.RESTART) {
+                        if (!DeviceChannel.calling) {
+                            AppUpdateHelper.restartApp(this@NurseHomeActivity)
+                        } else {
+                            Constants.laterRestart = true
+                        }
                     }
                 }
             }

+ 1 - 0
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/util/AnrFcExceptionUtil.java

@@ -102,6 +102,7 @@ public class AnrFcExceptionUtil implements Thread.UncaughtExceptionHandler {
 
         //重新启动app
         Intent mStartActivity = new Intent(application.getApplicationContext(), RegisterActivity.class);
+        mStartActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
         int mPendingIntentId = 123456;
         PendingIntent mPendingIntent = PendingIntent.getActivity(application.getApplicationContext(), mPendingIntentId, mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
         AlarmManager mgr = (AlarmManager) application.getApplicationContext().getSystemService(Context.ALARM_SERVICE);

+ 17 - 0
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/util/AppUpdateHelper.java

@@ -1,5 +1,7 @@
 package com.wdkl.ncs.android.component.nursehome.util;
 
+import android.app.AlarmManager;
+import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ApplicationInfo;
@@ -11,6 +13,8 @@ import android.os.Environment;
 import android.support.v4.content.FileProvider;
 import android.util.Log;
 
+import com.wdkl.ncs.android.component.nursehome.activity.RegisterActivity;
+
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.InputStreamReader;
@@ -211,6 +215,19 @@ public class AppUpdateHelper {
         context.sendBroadcast(intent);
     }
 
+    public static void restartApp(Context context) {
+        //重新启动app
+        Intent mStartActivity = new Intent(context.getApplicationContext(), RegisterActivity.class);
+        mStartActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+        int mPendingIntentId = 123456;
+        PendingIntent mPendingIntent = PendingIntent.getActivity(context.getApplicationContext(), mPendingIntentId, mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
+        AlarmManager mgr = (AlarmManager) context.getApplicationContext().getSystemService(Context.ALARM_SERVICE);
+        mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1500, mPendingIntent);
+
+        android.os.Process.killProcess(android.os.Process.myPid());
+        System.exit(0);
+    }
+
     public interface UpdateCallBack {
         void onFailed();
         void onSuccess();