Browse Source

1.添加锁屏弹窗,可以覆盖其他应用。

2.修改app自动拉起,优先从本地读取数据,可以快速拉起。
2025_1_17_tb223fc
wangwanlei 1 week ago
parent
commit
7f307c2070

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

@@ -158,6 +158,8 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
158 158
     private var tipsDialog: CustomDialog? = null
159 159
     private var systemDialog: AlertDialog? = null
160 160
 
161
+    private var lockDialog: AlertDialog?=null
162
+
161 163
     //创建应用卸载集合,方便获得应用信息
162 164
     private val unInstallAppList = arrayListOf<AppInfo>()
163 165
 
@@ -188,6 +190,8 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
188 190
 
189 191
     //判断是否在onDestroy状态
190 192
     private var isDestroyFlag = false
193
+    //判断是否是第一次执行,第一次进入onresume才执行本地拉起
194
+    private var firstStartLocalApp=true
191 195
 
192 196
     //执行了自启请求
193 197
     private var netAutoAppFlag = false
@@ -238,7 +242,7 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
238 242
         } catch (e: Exception) {
239 243
             LogShow("错误是" + e.toString())
240 244
         }
241
-       initViewModelCallBack()
245
+        initViewModelCallBack()
242 246
         isCreatFlag = true
243 247
         lifecycleScope.launch {
244 248
             isDestroyFlag = false
@@ -253,6 +257,7 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
253 257
             //updateAllStrategy()
254 258
         }
255 259
     }
260
+
256 261
     private fun initWallpaper() {
257 262
         lifecycleScope.launch {
258 263
             withContext(Dispatchers.IO) {
@@ -380,10 +385,13 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
380 385
                     var hasapp = 1
381 386
                     try {
382 387
                         val strategyBean =
383
-                            spUtils.getFromJson(Const.STRATEGYBEANKEY, StrategyBean::class.java) as StrategyBean
388
+                            spUtils.getFromJson(
389
+                                Const.STRATEGYBEANKEY,
390
+                                StrategyBean::class.java
391
+                            ) as StrategyBean
384 392
                         //获得平板策略是否使用app策略
385 393
                         hasapp = strategyBean.hasapp
386
-                    }catch (e:Exception){
394
+                    } catch (e: Exception) {
387 395
 
388 396
                     }
389 397
                     if (modelList.size > 0) {
@@ -401,9 +409,9 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
401 409
                         }
402 410
                     } else {
403 411
                         //hasapp==0表示未打开应用策略,所以打开打开应用安装权限,使用策略并未空则不允许安装应用
404
-                        if (hasapp==0){
412
+                        if (hasapp == 0) {
405 413
                             ManageApplication.disableInstallation(false)
406
-                        }else{
414
+                        } else {
407 415
                             ManageApplication.disableInstallation(true)
408 416
                         }
409 417
                     }
@@ -421,25 +429,27 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
421 429
                         val rxPermissions = RxPermissions(this@MainActivity)
422 430
                         rxPermissions.request(Manifest.permission.REQUEST_INSTALL_PACKAGES)
423 431
                             .subscribe { granted ->
424
-                                if (granted || ModelNameUtils.IS_LianxX505f() || ModelNameUtils.IS_LianxX6e6f()|| ModelNameUtils.IS_LianxTB223FC()) {
432
+                                if (granted || ModelNameUtils.IS_LianxX505f() || ModelNameUtils.IS_LianxX6e6f() || ModelNameUtils.IS_LianxTB223FC()) {
425 433
                                     // 权限已授予,执行安装操作
426 434
                                     val appList = AppUtils.GetAppList(this@MainActivity)
427 435
                                     //修改路径
428
-                               /*     getExternalFilesDir(null)?.let {
429
-                                        FileUtils.deleteCurrentFlie(it)
430
-                                    }
431
-                                    val file = getExternalFilesDir(null)*/
432
-                                    var file:File?=null
433
-                                    if (ModelNameUtils.IS_LianxTB223FC()){
436
+                                    /*     getExternalFilesDir(null)?.let {
437
+                                             FileUtils.deleteCurrentFlie(it)
438
+                                         }
439
+                                         val file = getExternalFilesDir(null)*/
440
+                                    var file: File? = null
441
+                                    if (ModelNameUtils.IS_LianxTB223FC()) {
434 442
                                         var directory =
435
-                                            Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
436
-                                        file=File(directory, "appdownload")
437
-                                        if (!file.exists()){
443
+                                            Environment.getExternalStoragePublicDirectory(
444
+                                                Environment.DIRECTORY_DOWNLOADS
445
+                                            )
446
+                                        file = File(directory, "appdownload")
447
+                                        if (!file.exists()) {
438 448
                                             file.mkdirs()
439
-                                        }else{
449
+                                        } else {
440 450
                                             FileUtils.deleteCurrentFlie(file)
441 451
                                         }
442
-                                    }else{
452
+                                    } else {
443 453
                                         getExternalFilesDir(null)?.let {
444 454
                                             FileUtils.deleteCurrentFlie(it)
445 455
                                         }
@@ -448,11 +458,15 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
448 458
                                     modelList.forEach { app ->
449 459
                                         try {
450 460
                                             //获得已安装的应用判断版本,未安装的则直接静默安装。
451
-                                            val filter = appList.filter { it.packageName.equals(app.appPackage) }
461
+                                            val filter =
462
+                                                appList.filter { it.packageName.equals(app.appPackage) }
452 463
                                             //列表中不存在,或者版本较低则更新
453 464
                                             val apkPath = app.apkPath
454 465
                                             val appName = app.appName
455
-                                            if (filter.isNotEmpty() || app.appPackage.equals(packageName)) {
466
+                                            if (filter.isNotEmpty() || app.appPackage.equals(
467
+                                                    packageName
468
+                                                )
469
+                                            ) {
456 470
                                                 //不为空filter.isNotEmpty()表示列表存在应用则判断版本号,app.appPackage.equals(packageName)表示需要判断是否更新桌面应用,都不满足表示应用不存在
457 471
                                                 val appversion =
458 472
                                                     if (app.appPackage.equals(packageName)) {
@@ -665,21 +679,22 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
665 679
 
666 680
         viewModel.viewModelScope.launch {
667 681
             viewModel.autoAppData.collect {
682
+                //因为flow创建时会自动调用,所以判断netAutoAppFlag
683
+                if (!netAutoAppFlag || isDestroyFlag) {
684
+                    return@collect
685
+                } else {
686
+                    netAutoAppFlag = false
687
+                }
668 688
                 lifecycleScope.launch {
669
-                    withContext(Dispatchers.IO){
689
+                    withContext(Dispatchers.IO) {
670 690
                         delay(3000)
671 691
                     }
672 692
                     /*mBinding.flayoutRoot.visibility = View.GONE*/
673 693
                     canClickFlag = true
674
-                    mBinding.userinfoLlayout.visibility=View.VISIBLE
694
+                    mBinding.userinfoLlayout.visibility = View.VISIBLE
675 695
                     mBinding.rv.visibility = View.VISIBLE
676 696
                 }
677 697
                 it?.let {
678
-                    if (!netAutoAppFlag || isDestroyFlag) {
679
-                        return@collect
680
-                    } else {
681
-                        netAutoAppFlag = false
682
-                    }
683 698
                     //连接不为空,并且应用已安装则跳转应用
684 699
                     /* it.authUrl="com.xhkjedu.xh_control_browser.MainActivity"
685 700
                      it.appPackage="com.xhkjedu.xh_control_browser"*/
@@ -688,6 +703,7 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
688 703
                     if (!mainLockFlag) {
689 704
                         //如果地址为空并且请求为true则不跳转,否则跳转
690 705
                         try {
706
+                            Log.d("网络跳转","自动拉起111")
691 707
                             if ((it.authUrl.isNullOrEmpty() || it.appPackage.isNullOrEmpty()) && it.netSucessFlag) {
692 708
                                 //请求成功但地址为空,不跳转
693 709
                                 canClickFlag = true
@@ -748,8 +764,8 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
748 764
               }
749 765
           }*/
750 766
         viewModel.viewModelScope.launch {
751
-            viewModel.timeResultDataFlow.collect{
752
-                if (SystemUtil.updateTimeFlag&&it!=null) {
767
+            viewModel.timeResultDataFlow.collect {
768
+                if (SystemUtil.updateTimeFlag && it != null) {
753 769
                     SystemUtil.updateTimeFlag = false
754 770
                     ManageApplication.setSysTime(it)
755 771
                     LogShow("当前设置的时间是" + it + "|||" + SystemClock.getDateString(it))
@@ -805,16 +821,6 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
805 821
             try {
806 822
                 canClickFlag = true
807 823
                 val am = getSystemService(ACTIVITY_SERVICE) as ActivityManager
808
-                /*val runningTasks = am.getRunningTasks(1)
809
-                if (!runningTasks.isNullOrEmpty()){
810
-                    //判断栈顶是否是自启APP不是的话拉起
811
-                    val contains = runningTasks[0].topActivity?.className.toString()
812
-                        .contains(autoAppBean.appPackage!!)
813
-                    if (contains){
814
-                        return
815
-                    }
816
-                }*/
817
-
818 824
                 //不在判断栈顶activity,现在根据进程名字判断,包含则不拉起(增加条件,当前页面为管控桌面则拉起)
819 825
                 var manageFlag = false
820 826
                 val runningTasks = am.getRunningTasks(1)
@@ -859,6 +865,35 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
859 865
         }
860 866
     }
861 867
 
868
+    //修改AutoApp启动逻辑,优先从本地中读取拉起,然后再从服务器中拉取
869
+    private fun startLocalAutoApp() {
870
+        if (userBean==null){
871
+            return
872
+        }
873
+        LogShow("当前锁定状态"+mainLockFlag)
874
+        if (!mainLockFlag) {
875
+            //如果地址为空并且请求为true则不跳转,否则跳转
876
+            try {
877
+                val autoAppBean = spUtils.getFromJson(
878
+                    Const.AUTOAPPKEY,
879
+                    AutoAppBean().javaClass
880
+                ) as AutoAppBean
881
+                Log.d("本地跳转","自动拉起")
882
+                if ((!autoAppBean.authUrl.isNullOrEmpty() && !autoAppBean.appPackage.isNullOrEmpty()) && AppUtils.isAppInstalled(this@MainActivity, autoAppBean.appPackage)
883
+                ) {
884
+                    Log.d("本地跳转","自动拉起111")
885
+                    //缓存地址不为空,并且安装了则跳转
886
+                    startAutoApp(autoAppBean)
887
+                } else {
888
+                    //其余情况都允许触控
889
+                    canClickFlag = true
890
+                }
891
+            } catch (e: Exception) {
892
+                canClickFlag = true
893
+            }
894
+        }
895
+    }
896
+
862 897
     private fun showSucessToast() {
863 898
         if (isResumeFlag) {
864 899
             //只有可见状态才提示策略更新
@@ -907,7 +942,7 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
907 942
         }
908 943
         mBinding.netsetLlayout.setOnClickListener {
909 944
             val intent = Intent(Settings.ACTION_WIFI_SETTINGS)
910
-            intent.putExtra("full_screen",true)
945
+            intent.putExtra("full_screen", true)
911 946
             intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
912 947
             startActivity(intent)
913 948
         }
@@ -950,41 +985,41 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
950 985
                     StrategyUtils.clearMemory(context, data)
951 986
                     Toaster.show(context.getString(R.string.speedend))
952 987
                 }
953
-/*
954
-                if (ModelNameUtils.IS_LianxX505f()|| ModelNameUtils.IS_LianxX6e6f()|| ModelNameUtils.IS_LianxTB223FC()){
955
-                    ManageApplication.setPackageEnabled("com.tblenovo.launcher",true)
956
-                    //505f的桌面名称
957
-                    if (ModelNameUtils.IS_LianxTB223FC()){
958
-                        ManageApplication.setCustomLauncher("com.tblenovo.launcher","com.android.searchlauncher.SearchLauncher")
959
-                    }else{
960
-                        ManageApplication.setCustomLauncher("com.tblenovo.launcher","com.android.iotlauncher.IotLauncher")
961
-                    }
962
-                    try {
963
-                        //解除管控后,禁止切换启动器
964
-                        ManageApplication.disallowSwitchLauncher_v3(true)
965
-                        val launchIntent = Intent()
966
-                        if (ModelNameUtils.IS_LianxTB223FC()){
967
-                            launchIntent.setComponent(
968
-                                ComponentName(
969
-                                    "com.tblenovo.launcher",
970
-                                    "com.android.searchlauncher.SearchLauncher"
971
-                                )
972
-                            )
973
-                        }else{
974
-                            launchIntent.setComponent(
975
-                                ComponentName(
976
-                                    "com.tblenovo.launcher",
977
-                                    "com.android.iotlauncher.IotLauncher"
978
-                                )
979
-                            )
980
-                        }
981
-                        launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
982
-                        startActivity(launchIntent)
983
-                    }catch (e:Exception){
984
-                        Toaster.showLong("失败原因"+e.toString())
985
-                    }
986
-                }
987
-*/
988
+                /*
989
+                                if (ModelNameUtils.IS_LianxX505f()|| ModelNameUtils.IS_LianxX6e6f()|| ModelNameUtils.IS_LianxTB223FC()){
990
+                                    ManageApplication.setPackageEnabled("com.tblenovo.launcher",true)
991
+                                    //505f的桌面名称
992
+                                    if (ModelNameUtils.IS_LianxTB223FC()){
993
+                                        ManageApplication.setCustomLauncher("com.tblenovo.launcher","com.android.searchlauncher.SearchLauncher")
994
+                                    }else{
995
+                                        ManageApplication.setCustomLauncher("com.tblenovo.launcher","com.android.iotlauncher.IotLauncher")
996
+                                    }
997
+                                    try {
998
+                                        //解除管控后,禁止切换启动器
999
+                                        ManageApplication.disallowSwitchLauncher_v3(true)
1000
+                                        val launchIntent = Intent()
1001
+                                        if (ModelNameUtils.IS_LianxTB223FC()){
1002
+                                            launchIntent.setComponent(
1003
+                                                ComponentName(
1004
+                                                    "com.tblenovo.launcher",
1005
+                                                    "com.android.searchlauncher.SearchLauncher"
1006
+                                                )
1007
+                                            )
1008
+                                        }else{
1009
+                                            launchIntent.setComponent(
1010
+                                                ComponentName(
1011
+                                                    "com.tblenovo.launcher",
1012
+                                                    "com.android.iotlauncher.IotLauncher"
1013
+                                                )
1014
+                                            )
1015
+                                        }
1016
+                                        launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
1017
+                                        startActivity(launchIntent)
1018
+                                    }catch (e:Exception){
1019
+                                        Toaster.showLong("失败原因"+e.toString())
1020
+                                    }
1021
+                                }
1022
+                */
988 1023
 
989 1024
             }
990 1025
 
@@ -1109,29 +1144,45 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
1109 1144
             }
1110 1145
             mBinding.userschoolTv.text = name.toString()
1111 1146
             mBinding.usernameTv.text = it.username
1147
+            isResumeFlag = true
1148
+            Const.startAppStoreFlag = false
1149
+            updateNetErrorAppRv()
1150
+            updateResumeStrategy()
1151
+            updatePadInfo()
1152
+            updateMcApp()
1153
+            val appVersionCode = SystemUtil.getAppVersionCode(this, packageName)
1154
+            val appVersionName = SystemUtil.getAppVersionName(this, packageName)
1155
+            mBinding.versionTv.text = if (com.xhkjedu.manageapp.BuildConfig.IS_DEBUG) {
1156
+                "版本 v${appVersionName} (Build ${appVersionCode})测试版"
1157
+            } else {
1158
+                "版本 v${appVersionName} (Build ${appVersionCode})正式版"
1159
+            }
1160
+            if (SystemUtil.isSuEnable()) {
1161
+                //root了则调用接口
1162
+                val data = LogdOperateBean()
1163
+                ManageApplication.getDeviceInfo()?.let {
1164
+                    data.sn = it
1165
+                }
1166
+                data.comm = "设备ROOT"
1167
+                data.doEvent = EventLog.ROOTEVENT
1168
+                viewModel.eventLog(data)
1169
+            }
1170
+            if (firstStartLocalApp){
1171
+                firstStartLocalApp=false
1172
+                startLocalAutoApp()
1173
+            }
1112 1174
         }
1113
-        isResumeFlag = true
1114
-        Const.startAppStoreFlag = false
1115
-        updateNetErrorAppRv()
1116
-        updateResumeStrategy()
1117
-        updatePadInfo()
1118
-        updateMcApp()
1119
-        val appVersionCode = SystemUtil.getAppVersionCode(this, packageName)
1120
-        val appVersionName = SystemUtil.getAppVersionName(this, packageName)
1121
-        mBinding.versionTv.text = if (com.xhkjedu.manageapp.BuildConfig.IS_DEBUG) {
1122
-            "版本 v${appVersionName} (Build ${appVersionCode})测试版"
1123
-        } else {
1124
-            "版本 v${appVersionName} (Build ${appVersionCode})正式版"
1125
-        }
1126
-        if (SystemUtil.isSuEnable()) {
1127
-            //root了则调用接口
1128
-            val data = LogdOperateBean()
1129
-            ManageApplication.getDeviceInfo()?.let {
1130
-                data.sn = it
1175
+    }
1176
+
1177
+    override fun onPause() {
1178
+        super.onPause()
1179
+        LogShow("锁定了吧显示弹窗吗222")
1180
+        if (userBean!=null){
1181
+            if (mainLockFlag){
1182
+                showLockDialog(true)
1183
+            }else{
1184
+                showLockDialog(false)
1131 1185
             }
1132
-            data.comm = "设备ROOT"
1133
-            data.doEvent = EventLog.ROOTEVENT
1134
-            viewModel.eventLog(data)
1135 1186
         }
1136 1187
     }
1137 1188
 
@@ -1180,11 +1231,12 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
1180 1231
             Const.backNum = 0
1181 1232
             updateAllStrategy()
1182 1233
         } else {
1183
-            if (!isCreatFlag) {
1234
+           /* if (!isCreatFlag) {
1184 1235
                 //!isCreatFlag表示不是第一次启动时使用useTimeStrategy
1185 1236
                 useTimeStrategy(5)
1186 1237
             }
1187
-            isCreatFlag = false
1238
+            isCreatFlag = false*/
1239
+            useTimeStrategy(5)
1188 1240
         }
1189 1241
     }
1190 1242
 
@@ -1429,7 +1481,7 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
1429 1481
     }
1430 1482
 
1431 1483
     private fun useTimeStrategy(type: Int) {
1432
-        LogShow("开始获得时间策略$type")
1484
+        LogShow("锁定了吧,开始获得时间策略$type")
1433 1485
         //获得sputils中的平板锁定策略
1434 1486
         try {
1435 1487
             //如果存储的是锁定则锁定
@@ -1441,22 +1493,22 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
1441 1493
                 block = StrategyUtils.getPadTimeStrategy(bean)
1442 1494
             }
1443 1495
             val param = spUtils.getParam(Const.DISABLEPAD, false) as Boolean
1444
-            if ((type==3||type==2) && !param){
1496
+            LogShow("锁定了吧,本地数据"+block+"|||"+param)
1497
+            if ((type == 3 || type == 2) && !param) {
1445 1498
                 //如果type3表示输入密码解锁,type==2表示远程解锁,这时只要解锁成功,即使不在使用时间也解锁屏幕,所以重置block的状态,但再次熄屏时还是会锁定
1446
-                block=false
1447
-            }else{
1499
+                block = false
1500
+            } else {
1448 1501
                 //判断是否重新锁定了,重新锁定则发送锁定日志,需要和之前的锁定状态进行对比
1449
-                if ((param || block)&&mBinding.lockLlayout.visibility == View.GONE){
1502
+                if ((param || block) && mBinding.lockLlayout.visibility == View.GONE) {
1450 1503
                     //如果block为真表示锁定,param为false表示手动解锁,则表示重新锁定了,发送锁定日志
1451 1504
                     postLockLog(3)
1452
-                }else if (!(param || block) && mBinding.mainLlayout.visibility == View.GONE){
1505
+                } else if (!(param || block) && mBinding.mainLlayout.visibility == View.GONE) {
1453 1506
                     //如果未锁定,并且之前是锁定,则发送解锁日志
1454 1507
                     postLockLog(2)
1455 1508
                 }
1456 1509
             }
1457 1510
             if (param || block) {
1458 1511
                 //隐藏账号编辑弹窗
1459
-                LogShow("展示锁定状态111")
1460 1512
                 accountDialog?.dismiss()
1461 1513
                 quitAccountDialog?.dismiss()
1462 1514
                 changeCodeDialog?.dismiss()
@@ -1465,12 +1517,14 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
1465 1517
                 mainLockFlag = true
1466 1518
                 //锁定时可以点击
1467 1519
                 canClickFlag = true
1520
+                showLockDialog(true)
1468 1521
             } else {
1469 1522
                 mainLockFlag = false
1470 1523
                 autoAppFlag = true
1471 1524
                 mBinding.mainLlayout.visibility = View.VISIBLE
1472 1525
                 mBinding.lockLlayout.visibility = View.GONE
1473 1526
                 hiddenSoft(mBinding.lockEt)
1527
+                showLockDialog(false)
1474 1528
             }
1475 1529
             //如果同时锁定和平板不再可用时间,优先显示锁定提示,锁定接触后显示不再可用时间提示
1476 1530
             mBinding.locktipsTv.text = if (param) {
@@ -1498,7 +1552,7 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
1498 1552
                 }
1499 1553
             }*/
1500 1554
             //没有单点登录所以不再判断
1501
-            LogShow("打开app拉起请求,type==$type")
1555
+            LogShow("锁定了吧打开app拉起请求,type==$type")
1502 1556
             userBean?.let {
1503 1557
                 netAutoAppFlag = true
1504 1558
                 viewModel.postAutoAppDetail(it.regionid)
@@ -1797,7 +1851,8 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
1797 1851
                 viewModel.postExitReseted(sn)
1798 1852
                 startIntentActivity(MainActivity().javaClass)
1799 1853
             }
1800
-            Const.CODE999.toString()->{
1854
+
1855
+            Const.CODE999.toString() -> {
1801 1856
                 viewModel.postSyncTime(true)
1802 1857
             }
1803 1858
 
@@ -1882,10 +1937,10 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
1882 1937
                         loginStudentBean.usersex = 0
1883 1938
                     }
1884 1939
                     loginStudentBean.sn = ManageApplication.getDeviceInfo()
1885
-                    loginStudentBean.device=Build.BRAND
1886
-                    loginStudentBean.deviceModel=Build.MODEL
1887
-                    loginStudentBean.clientVersion=SystemUtil.getAppVersionName(this,packageName)
1888
-                    loginStudentBean.romVersion=Build.DISPLAY
1940
+                    loginStudentBean.device = Build.BRAND
1941
+                    loginStudentBean.deviceModel = Build.MODEL
1942
+                    loginStudentBean.clientVersion = SystemUtil.getAppVersionName(this, packageName)
1943
+                    loginStudentBean.romVersion = Build.DISPLAY
1889 1944
                     updateUser = true
1890 1945
                     viewModel.editLogin(loginStudentBean)
1891 1946
                 } catch (e: Exception) {
@@ -2031,6 +2086,54 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
2031 2086
         }
2032 2087
     }
2033 2088
 
2089
+    private fun showLockDialog(showFlag:Boolean) {
2090
+         if (lockDialog==null){
2091
+             val v = View.inflate(this, R.layout.dialog_locklayout, null)
2092
+             val lockllayout=v.findViewById<View>(R.id.lock_llayout)
2093
+             val codeenter_cv=v.findViewById<View>(R.id.codeenter_cv)
2094
+             val lock_et=v.findViewById<EditText>(R.id.lock_et)
2095
+             val locktips_tv=v.findViewById<TextView>(R.id.locktips_tv)
2096
+             locktips_tv.text="这是弹窗"
2097
+             lockllayout.setOnClickListener {
2098
+                 //限制最多1分钟请求一次策略,
2099
+                 if (lastTimeLong + 1 * 60 * 1000 < System.currentTimeMillis()) {
2100
+                     lastTimeLong = System.currentTimeMillis()
2101
+                     updateAllStrategy()
2102
+                 }
2103
+             }
2104
+             codeenter_cv.setOnClickListener {
2105
+                 //如果密码一致,则解锁
2106
+                 val code = lock_et.text.toString()
2107
+                 if (code.isNullOrBlank()) {
2108
+                     return@setOnClickListener
2109
+                 }
2110
+                 ManageApplication.getDeviceInfo()?.let {
2111
+                     viewModel.postPwdDetail(code, it)
2112
+                 }
2113
+             }
2114
+             lockDialog =
2115
+                 AlertDialog.Builder(this).create()
2116
+             lockDialog?.setView(v)
2117
+             lockDialog?.setCancelable(false)
2118
+             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
2119
+                 lockDialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
2120
+                 lockDialog?.window?.setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY)
2121
+             } else {
2122
+                 lockDialog?.window?.setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)
2123
+             }
2124
+         }
2125
+        LogShow("锁定了吧显示弹窗吗"+showFlag+"|||"+mainLockFlag + "|||" + autoAppFlag)
2126
+        lockDialog?.apply {
2127
+            if (showFlag){
2128
+                if (!isShowing) {
2129
+                    show()
2130
+                }
2131
+            }else{
2132
+                dismiss()
2133
+            }
2134
+        }
2135
+    }
2136
+
2034 2137
     private fun getAppStoreList() {
2035 2138
         try {
2036 2139
             if (appStroeList.size == 0) {
@@ -2060,10 +2163,11 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
2060 2163
             startIntentActivity(MainActivity().javaClass)
2061 2164
         }
2062 2165
     }
2166
+
2063 2167
     /**
2064 2168
      * 发送锁定事件日志,用来处理当同时存在违规锁定和不再使用时间锁定时,通过密码或者远程解锁时会解锁一次,再次打开屏幕时会重新根据时间锁定,所以还需要发送锁定日志
2065 2169
      */
2066
-    private fun postLockLog(pushType: Int=3){
2170
+    private fun postLockLog(pushType: Int = 3) {
2067 2171
         val pushBean = LogPushBean()
2068 2172
         pushBean.pushType = pushType
2069 2173
         ManageApplication.getDeviceInfo()?.let {
@@ -2479,11 +2583,11 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(), Downloa
2479 2583
         if (!Const.startAppStoreFlag) {
2480 2584
             val appList = AppUtils.GetAppList(this)
2481 2585
             val firstOrNull = appList.firstOrNull { it.packageName.equals(downItem.pkgName) }
2482
-            if (firstOrNull!=null){
2483
-                if (downItem.appversion>firstOrNull.versionNum){
2586
+            if (firstOrNull != null) {
2587
+                if (downItem.appversion > firstOrNull.versionNum) {
2484 2588
                     InstallUtils.addInstall(downItem.savepath, downItem.pkgName, downItem.appName)
2485 2589
                 }
2486
-            }else{
2590
+            } else {
2487 2591
                 InstallUtils.addInstall(downItem.savepath, downItem.pkgName, downItem.appName)
2488 2592
             }
2489 2593
         }

+ 59
- 0
app/src/main/res/layout/dialog_locklayout.xml View File

@@ -0,0 +1,59 @@
1
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
2
+    xmlns:app="http://schemas.android.com/apk/res-auto"
3
+    android:id="@+id/lock_llayout"
4
+    android:layout_width="match_parent"
5
+    android:layout_height="match_parent"
6
+    android:background="@drawable/main_bg"
7
+    android:gravity="center_horizontal"
8
+    android:orientation="vertical">
9
+
10
+    <ImageView
11
+        android:layout_width="157dp"
12
+        android:layout_height="151dp"
13
+        android:layout_marginTop="104dp"
14
+        android:src="@drawable/icon_lock" />
15
+
16
+    <FrameLayout
17
+        android:layout_width="wrap_content"
18
+        android:layout_height="53dp"
19
+        android:layout_marginTop="26dp">
20
+
21
+        <EditText
22
+            android:id="@+id/lock_et"
23
+            android:layout_width="357dp"
24
+            android:layout_height="53dp"
25
+            android:background="@drawable/shape_shadow_bg"
26
+            android:hint="@string/passcode"
27
+            android:maxLength="20"
28
+            android:paddingLeft="28dp"
29
+            android:paddingRight="28dp"
30
+            android:singleLine="true"
31
+            android:textColor="@color/codetipscolor"
32
+            android:textColorHint="@color/codehintcolor"
33
+            android:textSize="16sp" />
34
+
35
+        <androidx.cardview.widget.CardView
36
+            android:id="@+id/codeenter_cv"
37
+            android:layout_width="24dp"
38
+            android:layout_height="24dp"
39
+            android:layout_gravity="center_vertical|right"
40
+            android:layout_marginRight="18dp"
41
+            app:cardBackgroundColor="@color/white">
42
+
43
+            <ImageView
44
+                android:layout_width="wrap_content"
45
+                android:layout_height="11dp"
46
+                android:layout_gravity="center"
47
+                android:src="@drawable/icon_etenter" />
48
+        </androidx.cardview.widget.CardView>
49
+    </FrameLayout>
50
+
51
+    <TextView
52
+        android:id="@+id/locktips_tv"
53
+        android:layout_width="wrap_content"
54
+        android:layout_height="wrap_content"
55
+        android:layout_marginTop="18dp"
56
+        android:text="@string/locktips"
57
+        android:textColor="@color/codetipscolor"
58
+        android:textSize="17sp" />
59
+</LinearLayout>

Loading…
Cancel
Save