Explorar o código

修改 APP升级为手动升级
修改在呼叫列表点击的呼叫不能通话的bug

wangjk %!s(int64=4) %!d(string=hai) anos
pai
achega
bb4d7aa278

+ 4 - 3
home/src/main/code/com/wdkl/ncs/android/component/home/activity/AppUpdateActivity.kt

@@ -85,9 +85,10 @@ class AppUpdateActivity :BaseActivity<AppUpdatePresenter, ActivityAppUpdateBindi
                 override fun onSuccess() {
                     runOnUiThread {
                         showMessage("升级成功")
-                        //finish()
-                        android.os.Process.killProcess(android.os.Process.myPid())
-                        System.exit(0)
+                        finish()
+                        //有root权限用这个
+//                        android.os.Process.killProcess(android.os.Process.myPid())
+//                        System.exit(0)
                     }
                 }
             })

+ 9 - 1
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchEventDetailActivity.kt

@@ -277,7 +277,15 @@ class WatchEventDetailActivity : BaseActivity<WatchHomeActivityPresenter, WatchA
             //sip
             var intent = Intent()
             intent.setClass(this, WebRTCVoipAudioActivity::class.java)
-            intent.putExtra("targetId", interactionVO?.fromSipId)
+
+//            Log.e(TAG,"interactionVO?.actionDirectionType"+interactionVO?.actionDirectionType)
+//            Log.e(TAG,"interactionVO?.fromSipId"+interactionVO?.fromSipId)
+//            Log.e(TAG,"interactionVO?.toSipId"+interactionVO?.toSipId)
+            if(interactionVO?.actionDirectionType == 1){ //呼入
+                intent.putExtra("targetId", interactionVO?.fromSipId)
+            }else { //呼出
+                intent.putExtra("targetId", interactionVO?.toSipId)
+            }
             intent.putExtra("TcpModel", tcpModel)
             intent.putExtra(WebRTCVoipAudioActivity().ACTION, WebRTCVoipAudioActivity().CALL)
             startActivity(intent)

+ 1 - 1
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchHomeActivity.kt

@@ -354,7 +354,7 @@ class WatchHomeActivity : BaseActivity<WatchHomeActivityPresenter, WatchActivity
             //唤醒屏幕并解锁屏幕
             Util().wakeUpAndUnlock(this)
 
-        }else if(messageEvent.tag == 13){
+        }else if(messageEvent.tag == Constants.EVENT_TCP_APP_UPDATE){
             //更新APP
             checkAppVersion()
         }else if(messageEvent.tag == Constants.EVENT_SIP_REGISTER_STATUS){

+ 46 - 11
home/src/main/code/com/wdkl/ncs/android/component/home/helper/AppUpdateHelper.java

@@ -8,6 +8,7 @@ import android.content.pm.PackageManager;
 import android.net.Uri;
 import android.os.Build;
 import android.os.Environment;
+import android.support.v4.content.FileProvider;
 import android.util.Log;
 
 import java.io.BufferedReader;
@@ -29,7 +30,10 @@ public class AppUpdateHelper {
      */
     public static final String FILE_APK_NAME = "CallingBed2APK.apk";
 
+    public static Context mContext;
+
     public static void updateApp(Context context, UpdateCallBack callBack) {
+        mContext = context;
         if (checkApkExit(context)) {
             Log.d(TAG, "文件存在");
         } else {
@@ -49,17 +53,17 @@ public class AppUpdateHelper {
 
 
         //if (installApp(context.getPackageName(), path)) {
-        if (rootSilenceInstall(path)) {
-            Log.d(TAG, "安装成功");
-            if (callBack != null) {
-                callBack.onSuccess();
-            }
-        } else {
-            Log.d(TAG, "安装失败");
-            if (callBack != null) {
-                callBack.onFailed();
-            }
-        }
+//        if (rootSilenceInstall(path)) {
+//            Log.d(TAG, "安装成功");
+//            if (callBack != null) {
+//                callBack.onSuccess();
+//            }
+//        } else {
+//            Log.d(TAG, "安装失败");
+//            if (callBack != null) {
+//                callBack.onFailed();
+//            }
+//        }
 
 //        if (silentInstall(context, path)) {
 //            Log.d(TAG, "app 安装成功");
@@ -67,8 +71,38 @@ public class AppUpdateHelper {
 //                callBack.onSuccess();
 //            }
 //        }
+
+        if (installAPP(path)) {
+            Log.d(TAG, "安装成功");
+            if (callBack != null) {
+                callBack.onSuccess();
+            }
+        }
     }
 
+
+    public static boolean installAPP(String path) {
+
+        Intent intent = new Intent(Intent.ACTION_VIEW);
+        File apkFile = new File(path);
+        // 由于没有在Activity环境下启动Activity,设置下面的标签
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        //Android 7.0以上要使用FileProvider
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+            intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+            //参数1 上下文, 参数2 Provider主机地址 和配置文件中保持一致   参数3  共享的文件
+            Uri uri = FileProvider.getUriForFile(mContext, mContext.getPackageName() + ".fileprovider", apkFile);
+            //添加这一句表示对目标应用临时授权该Uri所代表的文件
+//                    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+            intent.setDataAndType(uri, "application/vnd.android.package-archive");
+        } else {
+            intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
+        }
+        mContext.startActivity(intent);
+        return true;
+    }
+
+
     private static boolean checkApkExit(Context context) {
         File file = new File(FILE_APK_PATH + "/" + FILE_APK_NAME);
         return file.exists();
@@ -189,6 +223,7 @@ public class AppUpdateHelper {
 
     public interface UpdateCallBack {
         void onFailed();
+
         void onSuccess();
     }
 }

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

@@ -31,6 +31,8 @@ class Constants {
 
         val EVENT_TCP_RETRANSMISSION  = 0x16 //tcp掉线
 
+        val EVENT_TCP_APP_UPDATE  = 0x13 //app更新
+
         var APP_PATH = "" //app版本
     }
 

+ 2 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/channel/DeviceChannel.java

@@ -7,6 +7,7 @@ import android.os.PowerManager;
 import android.util.Log;
 
 import com.google.gson.Gson;
+import com.wdkl.ncs.android.component.nursehome.common.Constants;
 import com.wdkl.ncs.android.middleware.model.vo.InteractionVO;
 import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel;
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpAction;
@@ -71,7 +72,7 @@ public class DeviceChannel {
         }else if(tcpModel.getType() == TcpType.DEVICE &&tcpModel.getAction() == TcpAction.DeviceAction.RESTART||
                 tcpModel.getType() == TcpType.DEVICE && tcpModel.getAction() == TcpAction.DeviceAction.DEVICE_REFRESH||
                 tcpModel.getType() == TcpType.DEVICE && tcpModel.getAction() == TcpAction.DeviceAction.APP_UPDATE){
-
+            EventBus.getDefault().post(new MessageEvent(tcpModel, Constants.Companion.getEVENT_TCP_APP_UPDATE()));
         }else {
             EventBus.getDefault().post(new MessageEvent(tcpModel, 0));
         }