Browse Source

1.解除管控后登录再次管控。

2.增加下载后安装的延时操作。
20241218TB223FC(测试jar包)
wangwanlei 10 months ago
parent
commit
a81b4e52f2

+ 17
- 40
app/src/main/java/com/xhly/manageapp/ManageApplication.kt View File

@@ -4,6 +4,7 @@ package com.xhly.manageapp
4 4
 import android.Manifest
5 5
 import android.app.csdk.CSDKManager
6 6
 import android.content.ComponentName
7
+import android.content.pm.ApplicationInfo
7 8
 import android.content.pm.PackageManager
8 9
 import android.os.Build
9 10
 import androidx.core.content.ContextCompat
@@ -18,6 +19,7 @@ import com.xhly.corelib.utils.SharedPreferencesUtils
18 19
 import com.xhly.manageapp.bean.user.UserBean
19 20
 import com.xhly.manageapp.service.websocket.AppSocket
20 21
 import com.xhly.manageapp.utils.CurrentAppSharedPreferencesUtils
22
+import com.xhly.manageapp.utils.StrategyUtils
21 23
 import com.xhly.manageapp.utils.ZJAPPUtils
22 24
 import java.io.File
23 25
 
@@ -76,6 +78,7 @@ class ManageApplication : MultiDexApplication() {
76 78
             installPackageWhiteList.add(string)
77 79
             addInstallPackageWhiteList(installPackageWhiteList)
78 80
             if (ModelNameUtils.IS_LianxX505f()) {
81
+                LogShow("开始安装$string")
79 82
                 csdkManager?.installPackage(string)
80 83
             } else {
81 84
                 instance?.let {
@@ -587,6 +590,18 @@ class ManageApplication : MultiDexApplication() {
587 590
                 csdkManager?.setSleepTimeout_V3(time)
588 591
             }
589 592
         }
593
+
594
+        /**
595
+         * 获得网址白名单
596
+         */
597
+        fun urlWhiteListRead():List<String>{
598
+            if (ModelNameUtils.IS_LianxX505f()){
599
+                csdkManager?.urlWhiteListRead()?.let {
600
+                    return it
601
+                }
602
+            }
603
+            return arrayListOf()
604
+        }
590 605
     }
591 606
 
592 607
     override fun onCreate() {
@@ -598,6 +613,7 @@ class ManageApplication : MultiDexApplication() {
598 613
         val exitControlFlag = currentSpUtils.getParam(Const.EXIT_CONTROL, false) as Boolean
599 614
         Toaster.init(this)
600 615
         DialogX.init(this)
616
+        csdkManager = CSDKManager(this)
601 617
         //如果解除管控为真,则不在执行以下代码
602 618
         try {
603 619
             val userBean = spUtils.getFromJson(
@@ -617,46 +633,7 @@ class ManageApplication : MultiDexApplication() {
617 633
         //允许运行时权限
618 634
         setRuntimePermissions(true)
619 635
         if (!exitControlFlag){
620
-            if (ModelNameUtils.IS_LianxX505f()) {
621
-                //是505f则执行
622
-                csdkManager = CSDKManager(this)
623
-                //启用白名单
624
-                setUrlWhiteListEnable(true)
625
-                addInstallPackageWhiteList(
626
-                    arrayListOf(
627
-                        Const.CURRENTAPPPKG,
628
-                        Const.STOREAPPPKG
629
-                    )
630
-                )
631
-                setSleepTimeoutV3()
632
-                //给自己加入网络白名单
633
-                addAppWhiteRule(arrayListOf(Const.CURRENTAPPPKG))
634
-                //禁止状态栏下拉,屏蔽底部虚拟键。
635
-                disableStatusBarPanel(false)
636
-                hideHomeSoftKey(true)
637
-                hideMenuSoftKey(true)
638
-                enableAccessibility()
639
-                setCustomLauncher(
640
-                    Const.CURRENTAPPPKG,
641
-                    Const.CURRENTAPPPKG+".ui.ManageActivity"
642
-                )
643
-                if (Const.isDebug){
644
-                    csdkManager?.setPackageEnabled("com.xhly.easystud", true)
645
-                    setUrlWhiteListEnable(false)
646
-                    disableStatusBarPanel(false)
647
-                    hideHomeSoftKey(false)
648
-                    hideMenuSoftKey(false)
649
-                    csdkManager?.wifiWhiteList.let {
650
-                        csdkManager?.removeWifiWhiteList(it)
651
-                    }
652
-                }
653
-                csdkManager?.urlWhiteListRead()?.forEach {
654
-                    LogShow("白名单有"+it.toString())
655
-                }
656
-                csdkManager?.wifiWhiteList?.forEach {
657
-                    LogShow("wifi白名单有"+it.toString())
658
-                }
659
-            }
636
+             StrategyUtils.initControlStrategy()
660 637
         }
661 638
     }
662 639
 

+ 10
- 2
app/src/main/java/com/xhly/manageapp/ui/login/activity/LoginActivity.kt View File

@@ -88,12 +88,12 @@ class LoginActivity : BaseActivity<LoginViewModel, ActivityLoginBinding>() {
88 88
                regioncode=""
89 89
            }
90 90
         }
91
-        val exitControlFlag = currentSpUtils.getParam(Const.EXIT_CONTROL, false) as Boolean
91
+      /*  val exitControlFlag = currentSpUtils.getParam(Const.EXIT_CONTROL, false) as Boolean
92 92
         //如果解除管控为真,则不在执行以下代码
93 93
         if (!exitControlFlag){
94 94
             //登陆页面不在执行定时任务
95 95
             //startWorkManager()
96
-        }
96
+        }*/
97 97
     }
98 98
 
99 99
     @SuppressLint("CheckResult")
@@ -193,6 +193,7 @@ class LoginActivity : BaseActivity<LoginViewModel, ActivityLoginBinding>() {
193 193
     private fun login() {
194 194
         val account = mBinding.accountEt.text.toString()
195 195
         val code = mBinding.codeEt.text.toString()
196
+        LogShow("sn=="+ ManageApplication.getDeviceInfo())
196 197
         if (account.isNullOrBlank()) {
197 198
             Toast(getString(R.string.accountnoempty))
198 199
             return
@@ -220,6 +221,13 @@ class LoginActivity : BaseActivity<LoginViewModel, ActivityLoginBinding>() {
220 221
     }
221 222
 
222 223
     private fun loginSucess(userBean: UserBean){
224
+        //登录成功则打开管控
225
+        val exitControlFlag = currentSpUtils.getParam(Const.EXIT_CONTROL, false) as Boolean
226
+        if (exitControlFlag){
227
+            //如果解除了管控,登录成功则重新添加管控
228
+            currentSpUtils.setParam(Const.EXIT_CONTROL,false)
229
+            StrategyUtils.initControlStrategy()
230
+        }
223 231
         //提交登录事件
224 232
         val data = LogdOperateBean()
225 233
         ManageApplication.getDeviceInfo()?.let {

+ 44
- 20
app/src/main/java/com/xhly/manageapp/ui/main/activity/MainActivity.kt View File

@@ -1,6 +1,9 @@
1 1
 package com.xhly.manageapp.ui.main.activity
2 2
 
3 3
 import BaseActivity
4
+import DownLoadUtils
5
+import DownloadCallback
6
+import DownloadItem
4 7
 import android.Manifest
5 8
 import android.annotation.SuppressLint
6 9
 import android.app.ActivityManager
@@ -83,7 +86,7 @@ import java.util.TimerTask
83 86
 import java.util.concurrent.TimeUnit
84 87
 
85 88
 
86
-class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>() {
89
+class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(),DownloadCallback {
87 90
     var adapter: AppAdapter? = null
88 91
 
89 92
     private var mMyInstallReceiver: AppInstallReceiver? = null
@@ -129,6 +132,7 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>() {
129 132
                 }
130 133
             }
131 134
         }
135
+        DownLoadUtils.addCallback(this)
132 136
         adapter = AppAdapter(this, dataList)
133 137
         mBinding.rv.layoutManager = GridLayoutManager(this, 6, GridLayoutManager.VERTICAL, false)
134 138
         adapter?.changePwdListener = getChangeCodeListener()
@@ -191,30 +195,31 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>() {
191 195
                         getExternalFilesDir(null)?.let {
192 196
                             FileUtils.deleteCurrentFlie(it)
193 197
                         }
194
-                        modelList.forEach { app ->
195
-                            try {
196
-                                //获得已安装的应用判断版本,未安装的则直接静默安装。
197
-                                val filter =
198
-                                    appList.filter { it.packageName.equals(app.appPackage) }
199
-                                //列表中不存在,或者版本较低则更新
200
-                                val apkPath = app.apkPath
201
-                                val appName = app.appName
202
-                                if (filter.isNotEmpty()) {
203
-                                    val currentApp = filter[0]
204
-                                    if (app.versionNum > currentApp.versionNum) {
205
-                                        //版本低则更新安装。
206
-                                        viewModel.viewModelScope.launch {
198
+                        val file = getExternalFilesDir(null)
199
+                        viewModel.viewModelScope.launch {
200
+                            modelList.forEach { app ->
201
+                                try {
202
+                                    //获得已安装的应用判断版本,未安装的则直接静默安装。
203
+                                    val filter =
204
+                                        appList.filter { it.packageName.equals(app.appPackage) }
205
+                                    //列表中不存在,或者版本较低则更新
206
+                                    val apkPath = app.apkPath
207
+                                    val appName = app.appName
208
+                                    if (filter.isNotEmpty()) {
209
+                                        val currentApp = filter[0]
210
+                                        if (app.versionNum > currentApp.versionNum) {
211
+                                            //版本低则更新安装。
207 212
                                             AppDownLoadUtils.addToDownloadQueue(apkPath, appName)
213
+                                           /* DownLoadUtils.addDownload(apkPath,appName,File(file.toString(), "$appName.apk").toString())*/
208 214
                                         }
209
-                                    }
210
-                                } else {
211
-                                    //不存在,直接下载安装。
212
-                                    viewModel.viewModelScope.launch {
215
+                                    } else {
216
+                                        //不存在,直接下载安装。
213 217
                                         AppDownLoadUtils.addToDownloadQueue(apkPath, appName)
218
+                                      /*  DownLoadUtils.addDownload(apkPath,appName,File(file.toString(), "$appName.apk").toString())*/
214 219
                                     }
220
+                                } catch (e: Exception) {
221
+                                    LogShow("问题" + e.toString())
215 222
                                 }
216
-                            } catch (e: Exception) {
217
-                                LogShow("问题" + e.toString())
218 223
                             }
219 224
                         }
220 225
                     } else {
@@ -842,6 +847,7 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>() {
842 847
                     data.doEvent = EventLog.APPINSTALLEVENT
843 848
                     viewModel.eventLog(data)
844 849
                     updateAppInstallInfo()
850
+
845 851
                 } catch (e: Exception) {
846 852
 
847 853
                 }
@@ -1165,6 +1171,7 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>() {
1165 1171
             timer?.cancel()
1166 1172
             timer = null
1167 1173
         }
1174
+        DownLoadUtils.removeCallback(this)
1168 1175
         mMyInstallReceiver?.let {
1169 1176
             unregisterReceiver(it)
1170 1177
         }
@@ -1188,4 +1195,21 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>() {
1188 1195
             WorkManager.getInstance(this).enqueue(request)
1189 1196
         }
1190 1197
     }
1198
+
1199
+    override fun onStart(downItem: DownloadItem) {
1200
+
1201
+    }
1202
+
1203
+    override fun onSuccess(downItem: DownloadItem) {
1204
+        LogShow("开始安装")
1205
+        ManageApplication.installPackage(downItem.savepath)
1206
+    }
1207
+
1208
+    override fun onFailure(downItem: DownloadItem, errMsg: String) {
1209
+
1210
+    }
1211
+
1212
+    override fun onLoading(downItem: DownloadItem) {
1213
+
1214
+    }
1191 1215
 }

+ 5
- 6
app/src/main/java/com/xhly/manageapp/utils/AppDownLoadUtils.kt View File

@@ -7,12 +7,16 @@ import com.xhly.corelib.eventbus.UIEvent
7 7
 import com.xhly.corelib.utils.LogShow
8 8
 import com.xhly.manageapp.ManageApplication
9 9
 import kotlinx.coroutines.Dispatchers
10
+import kotlinx.coroutines.delay
10 11
 import kotlinx.coroutines.withContext
11 12
 import java.io.File
12 13
 import java.util.LinkedList
13 14
 
14 15
 object AppDownLoadUtils {
15 16
     private val downloadQueue = LinkedList<Pair<String, String>>()
17
+    //添加安装集合
18
+    var installQuene= arrayListOf<Pair<String, String>>()
19
+
16 20
     private var isDownloading = false
17 21
     suspend fun addToDownloadQueue(url: String, appName: String) {
18 22
         downloadQueue.add(Pair(url, appName))
@@ -55,6 +59,7 @@ object AppDownLoadUtils {
55 59
                         } else {
56 60
                             currentRetry++
57 61
                         }
62
+                        delay(1000*15)
58 63
                         LogShow("下载后,开始安装")
59 64
                     }
60 65
                 }
@@ -65,10 +70,4 @@ object AppDownLoadUtils {
65 70
             }
66 71
         }
67 72
     }
68
-
69
-    data class DownloadItem(val url: String, val tag: String, val savepath: String, var progress: Int)
70
-
71
-    interface DownloadCallback {
72
-        fun onSuccess(downItem: DownloadItem)
73
-    }
74 73
 }

+ 7
- 1
app/src/main/java/com/xhly/manageapp/utils/DownLoadUtils.kt View File

@@ -1,6 +1,8 @@
1 1
 import android.util.Log
2 2
 import com.billbook.lib.downloader.Download
3 3
 import com.billbook.lib.downloader.Downloader
4
+import com.xhly.corelib.Const
5
+import com.xhly.corelib.utils.LogShow
4 6
 import kotlinx.coroutines.CoroutineScope
5 7
 import kotlinx.coroutines.Dispatchers
6 8
 import kotlinx.coroutines.launch
@@ -65,18 +67,20 @@ object DownLoadUtils {
65 67
                     try {
66 68
                         val downloader = Downloader.Builder().build()
67 69
                         val request = Download.Request.Builder()
68
-                            .url(it.url)
70
+                            .url(Const.URL1 +it.url)
69 71
                             .into(it.savepath)
70 72
                             .build()
71 73
                         val call = downloader.newCall(request)
72 74
                         call.execute(object : Download.Callback {
73 75
                             override fun onStart(call: Download.Call) {
76
+                                LogShow("开始下载")
74 77
                                 for (downloadCallback in callbackList) {
75 78
                                     downloadCallback.onStart(downItem)
76 79
                                 }
77 80
                             }
78 81
 
79 82
                             override fun onSuccess(call: Download.Call, response: Download.Response) {
83
+                                LogShow("下载成功")
80 84
                                 queue.poll()
81 85
                                 for (downloadCallback in callbackList) {
82 86
                                     downloadCallback.onSuccess(downItem)
@@ -84,6 +88,7 @@ object DownLoadUtils {
84 88
                             }
85 89
 
86 90
                             override fun onFailure(call: Download.Call, response: Download.Response) {
91
+                                LogShow("下载失败"+response.message)
87 92
                                 queue.poll()
88 93
                                 for (downloadCallback in callbackList) {
89 94
                                     downloadCallback.onFailure(downItem, response.message!!)
@@ -92,6 +97,7 @@ object DownLoadUtils {
92 97
 
93 98
                             override fun onLoading(call: Download.Call, current: Long, total: Long) {
94 99
                                 val progress = (current * 100 / total).toInt()
100
+                                LogShow("下载进度"+progress)
95 101
 //                                Log.i("详情", "$progress ${downItem.progress} ${callbackList.size}")
96 102
                                 if (progress != downItem.progress) {
97 103
                                     for (downloadCallback in callbackList) {

+ 44
- 0
app/src/main/java/com/xhly/manageapp/utils/StrategyUtils.kt View File

@@ -372,6 +372,10 @@ object StrategyUtils {
372 372
               ManageApplication.enableMassStorage(true)
373 373
               //允许OTG
374 374
               ManageApplication.setCustomOTG(true)
375
+              //关闭网络规则
376
+              ManageApplication.ClearIpHostRules()
377
+              //关闭App规则
378
+              ManageApplication.clearAppWhiteRule()
375 379
               //关闭网络白名单
376 380
               ManageApplication.setUrlWhiteListEnable(false)
377 381
 
@@ -405,4 +409,44 @@ object StrategyUtils {
405 409
 
406 410
           }
407 411
     }
412
+
413
+    //初始化管控的默认规则
414
+    public fun initControlStrategy(){
415
+        if (ModelNameUtils.IS_LianxX505f()) {
416
+            //是505f则执行
417
+            //启用白名单
418
+            ManageApplication.setUrlWhiteListEnable(true)
419
+            ManageApplication.addInstallPackageWhiteList(
420
+                arrayListOf(
421
+                    Const.CURRENTAPPPKG,
422
+                    Const.STOREAPPPKG
423
+                )
424
+            )
425
+            ManageApplication.setSleepTimeoutV3()
426
+            //给自己加入网络白名单
427
+            ManageApplication.addAppWhiteRule(arrayListOf(Const.CURRENTAPPPKG))
428
+            //禁止状态栏下拉,屏蔽底部虚拟键。
429
+            ManageApplication.disableStatusBarPanel(false)
430
+            ManageApplication.hideHomeSoftKey(true)
431
+            ManageApplication.hideMenuSoftKey(true)
432
+            ManageApplication.enableAccessibility()
433
+            ManageApplication.setCustomLauncher(
434
+                Const.CURRENTAPPPKG,
435
+                Const.CURRENTAPPPKG + ".ui.ManageActivity"
436
+            )
437
+            if (Const.isDebug){
438
+                ManageApplication.setPackageEnabled("com.xhly.easystud", true)
439
+                ManageApplication.setUrlWhiteListEnable(false)
440
+                ManageApplication.disableStatusBarPanel(false)
441
+                ManageApplication.hideHomeSoftKey(false)
442
+                ManageApplication.hideMenuSoftKey(false)
443
+            }
444
+            ManageApplication.urlWhiteListRead().forEach {
445
+                LogShow("白名单有$it")
446
+            }
447
+            ManageApplication.getWifiWhiteList().forEach {
448
+                LogShow("wifi白名单有$it")
449
+            }
450
+        }
451
+    }
408 452
 }

Loading…
Cancel
Save