瀏覽代碼

鼎信竖屏门口机app升级优化,增加app安装监听,安装完成后自动启动

weizhengliang 5 月之前
父節點
當前提交
2a6896583e

二進制
callingdoor/src/main/assets/wd_update_plugin.apk


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

@@ -1,6 +1,7 @@
 package com.wdkl.app.ncs.callingdoor.activity
 
 import android.content.*
+import android.content.pm.PackageManager
 import android.net.ConnectivityManager
 import android.os.*
 import android.text.TextUtils
@@ -13,6 +14,7 @@ import com.enation.javashop.android.jrouter.external.annotation.Router
 import com.enation.javashop.net.engine.model.NetState
 import com.google.gson.Gson
 import com.google.gson.reflect.TypeToken
+import com.lztek.toolkit.Lztek
 import com.wdkl.app.ncs.callingdoor.BuildConfig
 import com.wdkl.app.ncs.callingdoor.R
 import com.wdkl.app.ncs.callingdoor.agreement.CallingdoorAgreement
@@ -243,6 +245,9 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
 
         if ("rk3128".equals(Build.MODEL)) {
             checkLaunch()
+        } else if (BuildConfig.flag.equals(Constant.DEV_W_DX)) {
+            //启动监听app安装完成服务
+            startYunpaiPlugin()
         }
 
         val dm = resources.displayMetrics
@@ -318,6 +323,81 @@ class CallingdoorActivity :BaseActivity<CallingdoorActivityPresenter, Callingdoo
         }
     }
 
+    private fun startYunpaiPlugin() {
+        try {
+            val packageInfos = packageManager.getInstalledPackages(
+                PackageManager.GET_ACTIVITIES or
+                        PackageManager.GET_SERVICES
+            )
+            var needInstall = false
+            for (info in packageInfos) {
+                val pkg = info.packageName
+                if (pkg.equals("com.wd.app")) {
+                    //启动云派app升级监听服务
+                    val intent = Intent()
+                    intent.setClassName("com.wd.app", "com.wd.app.MyService")
+                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+                        //android8.0以上通过startForegroundService启动service
+                        startForegroundService(intent)
+                    } else {
+                        startService(intent)
+                    }
+                    Constant.yunpai_plugin = true
+                    needInstall = false
+                    break
+                } else {
+                    needInstall = true
+                }
+            }
+
+            if (needInstall) {
+                //拷贝并安装云派app升级服务apk
+                Log.d(TAG,"准备安装升级服务apk")
+                Thread{
+                    try {
+                        val fileName = "wd_update_plugin.apk"
+                        val dstPath = Environment.getExternalStorageDirectory().path + "/Download"
+                        val file = File(dstPath)
+                        if (!file.exists()) {
+                            file.mkdirs()
+                        }
+                        val filePath = dstPath + "/" + fileName
+                        val outFile = File(filePath)
+                        if (outFile.exists()) {
+                            outFile.delete()
+                        }
+                        val inputStream: InputStream = getAssets().open(fileName)
+                        val fos = FileOutputStream(outFile)
+                        val buffer = ByteArray(1024)
+                        var byteCount = 0
+                        while (inputStream.read(buffer).also { byteCount = it } != -1) {
+                            fos.write(buffer, 0, byteCount)
+                        }
+                        fos.flush()
+                        inputStream.close()
+                        fos.close()
+
+                        if (BuildConfig.flag.equals(Constant.DEV_W_DX)) {
+                            val lztek = Lztek.create(BaseApplication.appContext)
+                            lztek.installApplication(filePath)
+                        } else {
+                            AppUpdateHelper.rootSilenceInstall(filePath)
+                        }
+
+                        runOnUiThread {
+                            showMessage(R.string.plugin_update_tips)
+                        }
+                    } catch (e: java.lang.Exception) {
+                        e.printStackTrace()
+                    }
+                }.start()
+            }
+        } catch (t: Throwable) {
+            t.printStackTrace()
+            showMessage(StringUtil.getResString(R.string.plugin_start_failed) + t.message)
+        }
+    }
+
 
 
     private fun startScheduledExecutor() {

+ 6 - 2
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/activity/SystemActivity.kt

@@ -3,6 +3,7 @@ package com.wdkl.app.ncs.callingdoor.activity
 import android.content.Intent
 import android.content.res.Configuration
 import android.os.Build
+import android.util.Log
 import android.view.View
 import com.enation.javashop.net.engine.model.NetState
 import com.wdkl.app.ncs.callingdoor.BuildConfig
@@ -231,11 +232,14 @@ class SystemActivity : BaseActivity<SystemActivityPresenter, CallingdoorSettingM
 
     override fun loadAppVersion(appInfo: AppVersionDO) {
         var version = BuildConfig.VERSION_CODE.toInt()
-        if ( version< appInfo.versionNo) {
+        if (version < appInfo.versionNo) {
             Constant.APP_UPDATING = true
             Constant.APP_PATH = appInfo.appPath
-            UpdateTipsDialogHelper.showDialog(activity)
+            //UpdateTipsDialogHelper.showDialog(activity)
 
+            val intent = Intent()
+            intent.setClass(activity, AppUpdateActivity::class.java)
+            activity.startActivity(intent)
         } else {
             showMessage(R.string.update_no_required)
         }

+ 0 - 4
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/dialog/UpdataDialogHelper.java

@@ -38,10 +38,6 @@ public class UpdataDialogHelper {
 
         version_button.setOnClickListener(v -> {
             if (alertDialog != null && alertDialog.isShowing()) {
-                Intent intent = new Intent();
-                intent.setClass(activity, AppUpdateActivity.class);
-                activity.startActivity(intent);
-
                 clickListener.onClick();
 
                 alertDialog.dismiss();