Browse Source

#CHANGE 优化升级,增加手动升级功能

weizhengliang 4 năm trước cách đây
mục cha
commit
cffe416a19

+ 15 - 4
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/activity/AppUpdateActivity.kt

@@ -50,10 +50,15 @@ class AppUpdateActivity :BaseActivity<AppUpdatePresenter, UpdateLayBinding>(), A
         HttpHelper.download(url, object : HttpHelper.DownloadListener {
             override fun onDownloadSuccess() {
                 Log.d("download", "onDownloadSuccess==" + "成功")
-                runOnUiThread {
-                    activity_calling_bed_text_download.text = "正在安装,请稍后..."
+                if (Constant.silentUpdate) {
+                    runOnUiThread {
+                        activity_calling_bed_text_download.text = "正在安装,请稍后..."
+                    }
+                    startInstallApk()
+                } else {
+                    installApk()
+                    finish()
                 }
-                startInstallApk()
             }
 
             override fun onDownloading(progress: Int) {
@@ -69,8 +74,9 @@ class AppUpdateActivity :BaseActivity<AppUpdatePresenter, UpdateLayBinding>(), A
         })
     }
 
+    //静默升级
     fun startInstallApk() {
-        Thread{
+        Thread {
             AppUpdateHelper.updateApp(this, object : AppUpdateHelper.UpdateCallBack {
                 override fun onFailed() {
                     runOnUiThread {
@@ -91,6 +97,11 @@ class AppUpdateActivity :BaseActivity<AppUpdatePresenter, UpdateLayBinding>(), A
         }.start()
     }
 
+    //手动升级
+    fun installApk() {
+        AppUpdateHelper.installAPK(this)
+    }
+
     override fun bindEvent() {
         //
     }

+ 3 - 0
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/activity/CallingdoorActivity.kt

@@ -227,6 +227,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                 }
             }, object :DialogInterface.OnClickListener {
                 override fun onClick(dialog: DialogInterface?, which: Int) {
+                    Constant.silentUpdate = false
                     checkAppVersion()
                 }
             })
@@ -344,6 +345,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         }
 
         //检查版本
+        Constant.silentUpdate = true
         checkAppVersion()
     }
 
@@ -612,6 +614,7 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
                     } else if (tcpModel.type == TcpType.DEVICE) {
                         //检查APP版本
                         if (tcpModel.getAction() == TcpAction.DeviceAction.APP_UPDATE) {
+                            Constant.silentUpdate = true
                             checkAppVersion()
                         }
                     } else if (tcpModel.action == TcpAction.DataAction.REFRESH) {

+ 27 - 2
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/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;
@@ -23,11 +24,35 @@ public class AppUpdateHelper {
     /**
      * 下载的APK文件绝对路径
      */
-    public static final String FILE_APK_PATH = Environment.getExternalStorageDirectory() + "/CallingBed2";
+    public static final String FILE_APK_PATH = Environment.getExternalStorageDirectory() + "/CallingDoor";
     /**
      * 下载的APK文件的文件名
      */
-    public static final String FILE_APK_NAME = "CallingBed2APK.apk";
+    public static final String FILE_APK_NAME = "CallingDoorAPK.apk";
+
+    public static void installAPK(Context context) {
+        try {
+            File apkFile = new File(FILE_APK_PATH + "/" + FILE_APK_NAME);
+            if (!apkFile.exists()) {
+                return;
+            }
+
+            Intent intent = new Intent(Intent.ACTION_VIEW);
+            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//安装完成后打开新版本
+            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 给目标应用一个临时授权
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {//判断版本大于等于7.0
+                //如果SDK版本>=24,即:Build.VERSION.SDK_INT >= 24,使用FileProvider兼容安装apk
+                String packageName = context.getApplicationContext().getPackageName();
+                String authority = new StringBuilder(packageName).append(".fileprovider").toString();
+                Uri apkUri = FileProvider.getUriForFile(context, authority, apkFile);
+                intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
+            } else {
+                intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
+            }
+            context.startActivity(intent);
+        } catch (Exception e) {
+        }
+    }
 
     public static void updateApp(Context context, UpdateCallBack callBack) {
         if (checkApkExit(context)) {

+ 2 - 1
callingdoor/src/main/res/layout/callingdoor_main_lay.xml

@@ -34,8 +34,9 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_alignParentBottom="true"
+                android:layout_marginTop="10dp"
                 android:layout_marginBottom="10dp"
-                android:paddingTop="4dp"
+                android:paddingTop="10dp"
                 android:paddingBottom="10dp"
                 android:gravity="center"
                 android:text="版本"

+ 2 - 1
callingdoor/src/main/res/layout/qr_code_lay.xml

@@ -102,7 +102,8 @@
             android:gravity="center_horizontal"
             android:text="检查升级"
             android:textColor="@drawable/selector_bottom_btn_text_color"
-            android:textSize="24sp"/>
+            android:textSize="24sp"
+            android:visibility="gone"/>
 
         <TextView
             android:id="@+id/tv_detail_title"

+ 1 - 1
callingdoor/src/main/res/layout/update_lay.xml

@@ -12,7 +12,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_centerInParent="true"
-            android:text="正在升级中,请勿操作..."
+            android:text="正在下载安装包,请勿操作..."
             android:textColor="#3D3D63"
             android:textSize="30sp" />
 

+ 3 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constant.java

@@ -109,6 +109,9 @@ public class Constant {
     //设备是否有camera
     public static boolean supportCamera = false;
 
+    //是否手动升级
+    public static boolean silentUpdate = true;
+
     /**
      * Sip注册状态
      */