Просмотр исходного кода

1.添加app安装后的更新日志调用

20241218TB223FC(测试jar包)
wangwanlei 1 год назад
Родитель
Сommit
267d76fb80

+ 13
- 0
app/src/main/java/com/xhly/manageapp/bean/app/AppInstallBean.kt Просмотреть файл

1
+package com.xhly.manageapp.bean.app
2
+
3
+class AppInstallBean {
4
+    var userid=0L
5
+    var appName:String?=""
6
+    var appVersion:String?=""
7
+    var appNum:Long=0L
8
+    var appPackage:String?=""
9
+    var sn:String?=""
10
+    var mac:String?=""
11
+    var schoolid:Long=0L
12
+    var regionid:Long?=null
13
+}

app/src/main/java/com/xhly/manageapp/bean/AppModel.java → app/src/main/java/com/xhly/manageapp/bean/app/AppModel.java Просмотреть файл

1
-package com.xhly.manageapp.bean;
1
+package com.xhly.manageapp.bean.app;
2
 
2
 
3
 import java.io.Serializable;
3
 import java.io.Serializable;
4
 import java.util.List;
4
 import java.util.List;

app/src/main/java/com/xhly/manageapp/bean/ListAppBean.kt → app/src/main/java/com/xhly/manageapp/bean/app/ListAppBean.kt Просмотреть файл

1
-package com.xhly.manageapp.bean
1
+package com.xhly.manageapp.bean.app
2
 
2
 
3
 class ListAppBean {
3
 class ListAppBean {
4
     var appgroupid = 0
4
     var appgroupid = 0

+ 9
- 1
app/src/main/java/com/xhly/manageapp/network/UriAdress.kt Просмотреть файл

53
     const val PADDETAILADD = "/deviceDetail/add"
53
     const val PADDETAILADD = "/deviceDetail/add"
54
 
54
 
55
     /**
55
     /**
56
-     *用来统计版本更新消息,而不是用来版本更新(每次有app更新和安装都调用)
56
+     *用来统计版本更新消息,记录管控的版本
57
      */
57
      */
58
     const val CLIENT_ADD = "/client/add"
58
     const val CLIENT_ADD = "/client/add"
59
 
59
 
60
+    /**
61
+     *设备已安装应用-批量添加
62
+     */
63
+    const val APPINSTALL_ADD = "/logAppInstall/batch_add"
64
+
60
     /**
65
     /**
61
      * 登录接口
66
      * 登录接口
62
      */
67
      */
63
     const val ULOGIN_LOGIN = "/ulogin/login"
68
     const val ULOGIN_LOGIN = "/ulogin/login"
64
 
69
 
70
+
71
+
72
+
65
     /**
73
     /**
66
      * 登录校验接口
74
      * 登录校验接口
67
      */
75
      */

+ 88
- 11
app/src/main/java/com/xhly/manageapp/ui/main/activity/MainActivity.kt Просмотреть файл

41
 import com.xhly.corelib.utils.FileUtils
41
 import com.xhly.corelib.utils.FileUtils
42
 import com.xhly.corelib.utils.GsonUtils
42
 import com.xhly.corelib.utils.GsonUtils
43
 import com.xhly.corelib.utils.LogShow
43
 import com.xhly.corelib.utils.LogShow
44
+import com.xhly.corelib.utils.MD5Utils
44
 import com.xhly.corelib.utils.SharedPreferencesUtils
45
 import com.xhly.corelib.utils.SharedPreferencesUtils
45
 import com.xhly.corelib.utils.SystemUtil
46
 import com.xhly.corelib.utils.SystemUtil
46
 import com.xhly.manageapp.AppAdapter
47
 import com.xhly.manageapp.AppAdapter
47
 import com.xhly.manageapp.ManageApplication
48
 import com.xhly.manageapp.ManageApplication
48
 import com.xhly.manageapp.bean.EventLog
49
 import com.xhly.manageapp.bean.EventLog
49
 import com.xhly.manageapp.bean.SocketMsgBean
50
 import com.xhly.manageapp.bean.SocketMsgBean
51
+import com.xhly.manageapp.bean.app.AppInstallBean
52
+import com.xhly.manageapp.bean.app.AppModel
50
 import com.xhly.manageapp.bean.log.LogPushBean
53
 import com.xhly.manageapp.bean.log.LogPushBean
51
 import com.xhly.manageapp.bean.log.LogdOperateBean
54
 import com.xhly.manageapp.bean.log.LogdOperateBean
52
 import com.xhly.manageapp.bean.log.UpdateBean
55
 import com.xhly.manageapp.bean.log.UpdateBean
389
         super.onResume()
392
         super.onResume()
390
         useTimeStrategy()
393
         useTimeStrategy()
391
         updatePadInfo()
394
         updatePadInfo()
395
+        updateMcApp()
392
         getLocation()
396
         getLocation()
393
     }
397
     }
394
 
398
 
415
         updatePadInfo()
419
         updatePadInfo()
416
     }
420
     }
417
 
421
 
418
-    private fun updateAppInstallInfo(packageInfo: PackageInfo) {
422
+    private fun updateAppInstallInfo() {
419
         try {
423
         try {
424
+            //获得已安装应用列表
425
+            val appList = AppUtils.GetAppList(this)
426
+            try {
427
+                //获得预装应用的包名
428
+                val currentList =
429
+                    currentSpUtils.getFromJson(
430
+                        Const.FIRSTAPPLIST,
431
+                        ArrayList<String>().javaClass
432
+                    ) as ArrayList<String>
433
+                val removeList = arrayListOf<AppInfo>()
434
+                currentList.forEach { pkg ->
435
+                    //除了管控之类的我们的app之外的预装都不在统计范围
436
+                    if (Const.CURRENTAPPPKG!=pkg&&Const.STOREAPPPKG!=pkg) {
437
+                        appList.filter { it.packageName == pkg }.forEach {
438
+                            removeList.add(it)
439
+                        }
440
+                    }
441
+                }
442
+                //除了管控之类的我们的app之外的预装都不在统计范围,所以移除
443
+                appList.removeAll(removeList)
444
+            } catch (e: Exception) {
445
+
446
+            }
420
             val userBean = spUtils.getFromJson(Const.USERINFO, UserBean().javaClass) as UserBean
447
             val userBean = spUtils.getFromJson(Const.USERINFO, UserBean().javaClass) as UserBean
421
-            val updateBean = UpdateBean()
422
-            ManageApplication.getDeviceInfo()?.let {
423
-                updateBean.sn = it
448
+            val appInstallList= arrayListOf<AppInstallBean>()
449
+            appList.forEach {
450
+                val appInstallBean=AppInstallBean()
451
+                appInstallBean.userid=userBean.userid
452
+                appInstallBean.appName=it.name
453
+                appInstallBean.appVersion=it.versionName
454
+                appInstallBean.appNum=it.versionNum
455
+                appInstallBean.appPackage=it.packageName
456
+                ManageApplication.getDeviceInfo()?.let {sn->
457
+                    appInstallBean.sn = sn
458
+                }
459
+                ManageApplication.getDeviceInfo(1)?.let {mac->
460
+                    appInstallBean.mac = mac
461
+                }
462
+                appInstallBean.schoolid=userBean.schoolid
463
+                appInstallBean.regionid=userBean.regionid
464
+                appInstallList.add(appInstallBean)
424
             }
465
             }
425
-            updateBean.cversion = packageInfo.versionName
426
-            updateBean.schoolid = userBean.schoolid
427
-            updateBean.userid = userBean.userid
428
-            updateBean.regionid = userBean.regionid
429
-            viewModel.updateAppInstallInfo(updateBean)
466
+
467
+            viewModel.updateAppInstallInfo(appInstallList)
430
         }catch (e:Exception){
468
         }catch (e:Exception){
431
 
469
 
432
         }
470
         }
433
     }
471
     }
434
 
472
 
473
+
435
     @SuppressLint("CheckResult")
474
     @SuppressLint("CheckResult")
436
     private fun updatePadInfo() {
475
     private fun updatePadInfo() {
437
         try {
476
         try {
464
         }
503
         }
465
     }
504
     }
466
 
505
 
506
+
507
+
508
+    private fun updateMcApp() {
509
+        //每天请求一次app更新接口,这个接口是用于提交管控自身的版本信息统计
510
+        try {
511
+            val userBean = spUtils.getFromJson(Const.USERINFO, UserBean().javaClass) as UserBean
512
+            //存储pad更新请求时间,如果为同一天则不在上传,不然继续上传
513
+            val padTime = spUtils.getParam(Const.PADUPDATETIMEKEY, 0L) as Long
514
+            val instance = Calendar.getInstance()
515
+            val currentYear = instance.get(Calendar.YEAR)
516
+            val currentDay = instance.get(Calendar.DAY_OF_YEAR)
517
+            instance.timeInMillis = padTime
518
+            val year = instance.get(Calendar.YEAR)
519
+            val day = instance.get(Calendar.DAY_OF_YEAR)
520
+            if (!(currentYear == year && currentDay == day)) {
521
+                val updateBean = UpdateBean()
522
+                ManageApplication.getDeviceInfo()?.let {
523
+                    updateBean.sn = it
524
+                }
525
+                val packageInfo =
526
+                    packageManager.getPackageInfo(packageName, PackageManager.GET_META_DATA)
527
+                updateBean.cversion = packageInfo.versionName
528
+                updateBean.schoolid = userBean.schoolid
529
+                updateBean.userid = userBean.userid
530
+                updateBean.regionid = userBean.regionid
531
+               viewModel.updateMcApp(updateBean)
532
+            }
533
+        } catch (e: Exception) {
534
+
535
+        }
536
+    }
537
+
467
     @SuppressLint("CheckResult")
538
     @SuppressLint("CheckResult")
468
     private fun getLocation() {
539
     private fun getLocation() {
469
         val rxPermissions = RxPermissions(this)
540
         val rxPermissions = RxPermissions(this)
650
                     }
721
                     }
651
                     val packageInfo =
722
                     val packageInfo =
652
                         packageManager.getPackageInfo(message, PackageManager.GET_META_DATA)
723
                         packageManager.getPackageInfo(message, PackageManager.GET_META_DATA)
653
-                    data.comm = "App安装"
724
+                    val label =
725
+                        packageManager.getApplicationLabel(packageInfo.applicationInfo)
726
+                    data.comm = "App安装,应用名:${label}"
654
                     data.appPackage = message
727
                     data.appPackage = message
655
                     data.doEvent = EventLog.APPINSTALLEVENT
728
                     data.doEvent = EventLog.APPINSTALLEVENT
656
                     viewModel.eventLog(data)
729
                     viewModel.eventLog(data)
657
-                    updateAppInstallInfo(packageInfo)
730
+                    updateAppInstallInfo()
658
                 }catch (e:Exception){
731
                 }catch (e:Exception){
659
 
732
 
660
                 }
733
                 }
781
                         }
854
                         }
782
                     }
855
                     }
783
                 }
856
                 }
857
+                //如果包含应用商店也移除,因为会在自定义app中添加
858
+                appList.filter { it.packageName == Const.STOREAPPPKG}.forEach {
859
+                    removeList.add(it)
860
+                }
784
                 //移除学校控制之外预装应用
861
                 //移除学校控制之外预装应用
785
                 appList.removeAll(removeList)
862
                 appList.removeAll(removeList)
786
             } catch (e: Exception) {
863
             } catch (e: Exception) {

+ 15
- 4
app/src/main/java/com/xhly/manageapp/ui/main/viewmodel/MainViewModel.kt Просмотреть файл

5
 import com.xhly.corelib.Const
5
 import com.xhly.corelib.Const
6
 import com.xhly.corelib.eventbus.UIEvent
6
 import com.xhly.corelib.eventbus.UIEvent
7
 import com.xhly.corelib.network.RetrofitService
7
 import com.xhly.corelib.network.RetrofitService
8
-import com.xhly.manageapp.bean.AppModel
9
-import com.xhly.manageapp.bean.ListAppBean
8
+import com.xhly.manageapp.bean.app.AppModel
9
+import com.xhly.manageapp.bean.app.ListAppBean
10
 import com.xhly.manageapp.bean.log.UpdateBean
10
 import com.xhly.manageapp.bean.log.UpdateBean
11
 import com.xhly.manageapp.bean.WallpaperBean
11
 import com.xhly.manageapp.bean.WallpaperBean
12
+import com.xhly.manageapp.bean.app.AppInstallBean
12
 import com.xhly.manageapp.bean.log.PadInfoBean
13
 import com.xhly.manageapp.bean.log.PadInfoBean
13
 import com.xhly.manageapp.bean.school.SchoolDeviceSetBean
14
 import com.xhly.manageapp.bean.school.SchoolDeviceSetBean
14
 import com.xhly.manageapp.bean.strategy.AppTimeManageBean
15
 import com.xhly.manageapp.bean.strategy.AppTimeManageBean
121
     }
122
     }
122
 
123
 
123
     /**
124
     /**
124
-     * 添加应用安装和更新消息
125
+     * 添加安装的app的更新日志,每次安装应用后扫描并上传所有app
125
      */
126
      */
126
-    fun updateAppInstallInfo(updateBean: UpdateBean) {
127
+    fun updateAppInstallInfo(list:List<AppInstallBean>) {
128
+        launchUI {
129
+            val result = appService.postAppInstallAdd(list)
130
+        }
131
+    }
132
+
133
+
134
+    /**
135
+     * 每天请求一次app更新接口,这个接口是用于提交管控自身的版本信息统计
136
+     */
137
+    fun updateMcApp(updateBean: UpdateBean) {
127
         launchUI {
138
         launchUI {
128
             val postClientAdd = appService.postClientAdd(updateBean)
139
             val postClientAdd = appService.postClientAdd(updateBean)
129
             if (postClientAdd.code == 0) {
140
             if (postClientAdd.code == 0) {

Загрузка…
Отмена
Сохранить