Browse Source

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

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

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

158
     private var tipsDialog: CustomDialog? = null
158
     private var tipsDialog: CustomDialog? = null
159
     private var systemDialog: AlertDialog? = null
159
     private var systemDialog: AlertDialog? = null
160
 
160
 
161
+    private var lockDialog: AlertDialog?=null
162
+
161
     //创建应用卸载集合,方便获得应用信息
163
     //创建应用卸载集合,方便获得应用信息
162
     private val unInstallAppList = arrayListOf<AppInfo>()
164
     private val unInstallAppList = arrayListOf<AppInfo>()
163
 
165
 
188
 
190
 
189
     //判断是否在onDestroy状态
191
     //判断是否在onDestroy状态
190
     private var isDestroyFlag = false
192
     private var isDestroyFlag = false
193
+    //判断是否是第一次执行,第一次进入onresume才执行本地拉起
194
+    private var firstStartLocalApp=true
191
 
195
 
192
     //执行了自启请求
196
     //执行了自启请求
193
     private var netAutoAppFlag = false
197
     private var netAutoAppFlag = false
238
         } catch (e: Exception) {
242
         } catch (e: Exception) {
239
             LogShow("错误是" + e.toString())
243
             LogShow("错误是" + e.toString())
240
         }
244
         }
241
-       initViewModelCallBack()
245
+        initViewModelCallBack()
242
         isCreatFlag = true
246
         isCreatFlag = true
243
         lifecycleScope.launch {
247
         lifecycleScope.launch {
244
             isDestroyFlag = false
248
             isDestroyFlag = false
253
             //updateAllStrategy()
257
             //updateAllStrategy()
254
         }
258
         }
255
     }
259
     }
260
+
256
     private fun initWallpaper() {
261
     private fun initWallpaper() {
257
         lifecycleScope.launch {
262
         lifecycleScope.launch {
258
             withContext(Dispatchers.IO) {
263
             withContext(Dispatchers.IO) {
380
                     var hasapp = 1
385
                     var hasapp = 1
381
                     try {
386
                     try {
382
                         val strategyBean =
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
                         //获得平板策略是否使用app策略
392
                         //获得平板策略是否使用app策略
385
                         hasapp = strategyBean.hasapp
393
                         hasapp = strategyBean.hasapp
386
-                    }catch (e:Exception){
394
+                    } catch (e: Exception) {
387
 
395
 
388
                     }
396
                     }
389
                     if (modelList.size > 0) {
397
                     if (modelList.size > 0) {
401
                         }
409
                         }
402
                     } else {
410
                     } else {
403
                         //hasapp==0表示未打开应用策略,所以打开打开应用安装权限,使用策略并未空则不允许安装应用
411
                         //hasapp==0表示未打开应用策略,所以打开打开应用安装权限,使用策略并未空则不允许安装应用
404
-                        if (hasapp==0){
412
+                        if (hasapp == 0) {
405
                             ManageApplication.disableInstallation(false)
413
                             ManageApplication.disableInstallation(false)
406
-                        }else{
414
+                        } else {
407
                             ManageApplication.disableInstallation(true)
415
                             ManageApplication.disableInstallation(true)
408
                         }
416
                         }
409
                     }
417
                     }
421
                         val rxPermissions = RxPermissions(this@MainActivity)
429
                         val rxPermissions = RxPermissions(this@MainActivity)
422
                         rxPermissions.request(Manifest.permission.REQUEST_INSTALL_PACKAGES)
430
                         rxPermissions.request(Manifest.permission.REQUEST_INSTALL_PACKAGES)
423
                             .subscribe { granted ->
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
                                     val appList = AppUtils.GetAppList(this@MainActivity)
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
                                         var directory =
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
                                             file.mkdirs()
448
                                             file.mkdirs()
439
-                                        }else{
449
+                                        } else {
440
                                             FileUtils.deleteCurrentFlie(file)
450
                                             FileUtils.deleteCurrentFlie(file)
441
                                         }
451
                                         }
442
-                                    }else{
452
+                                    } else {
443
                                         getExternalFilesDir(null)?.let {
453
                                         getExternalFilesDir(null)?.let {
444
                                             FileUtils.deleteCurrentFlie(it)
454
                                             FileUtils.deleteCurrentFlie(it)
445
                                         }
455
                                         }
448
                                     modelList.forEach { app ->
458
                                     modelList.forEach { app ->
449
                                         try {
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
                                             val apkPath = app.apkPath
464
                                             val apkPath = app.apkPath
454
                                             val appName = app.appName
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
                                                 //不为空filter.isNotEmpty()表示列表存在应用则判断版本号,app.appPackage.equals(packageName)表示需要判断是否更新桌面应用,都不满足表示应用不存在
470
                                                 //不为空filter.isNotEmpty()表示列表存在应用则判断版本号,app.appPackage.equals(packageName)表示需要判断是否更新桌面应用,都不满足表示应用不存在
457
                                                 val appversion =
471
                                                 val appversion =
458
                                                     if (app.appPackage.equals(packageName)) {
472
                                                     if (app.appPackage.equals(packageName)) {
665
 
679
 
666
         viewModel.viewModelScope.launch {
680
         viewModel.viewModelScope.launch {
667
             viewModel.autoAppData.collect {
681
             viewModel.autoAppData.collect {
682
+                //因为flow创建时会自动调用,所以判断netAutoAppFlag
683
+                if (!netAutoAppFlag || isDestroyFlag) {
684
+                    return@collect
685
+                } else {
686
+                    netAutoAppFlag = false
687
+                }
668
                 lifecycleScope.launch {
688
                 lifecycleScope.launch {
669
-                    withContext(Dispatchers.IO){
689
+                    withContext(Dispatchers.IO) {
670
                         delay(3000)
690
                         delay(3000)
671
                     }
691
                     }
672
                     /*mBinding.flayoutRoot.visibility = View.GONE*/
692
                     /*mBinding.flayoutRoot.visibility = View.GONE*/
673
                     canClickFlag = true
693
                     canClickFlag = true
674
-                    mBinding.userinfoLlayout.visibility=View.VISIBLE
694
+                    mBinding.userinfoLlayout.visibility = View.VISIBLE
675
                     mBinding.rv.visibility = View.VISIBLE
695
                     mBinding.rv.visibility = View.VISIBLE
676
                 }
696
                 }
677
                 it?.let {
697
                 it?.let {
678
-                    if (!netAutoAppFlag || isDestroyFlag) {
679
-                        return@collect
680
-                    } else {
681
-                        netAutoAppFlag = false
682
-                    }
683
                     //连接不为空,并且应用已安装则跳转应用
698
                     //连接不为空,并且应用已安装则跳转应用
684
                     /* it.authUrl="com.xhkjedu.xh_control_browser.MainActivity"
699
                     /* it.authUrl="com.xhkjedu.xh_control_browser.MainActivity"
685
                      it.appPackage="com.xhkjedu.xh_control_browser"*/
700
                      it.appPackage="com.xhkjedu.xh_control_browser"*/
688
                     if (!mainLockFlag) {
703
                     if (!mainLockFlag) {
689
                         //如果地址为空并且请求为true则不跳转,否则跳转
704
                         //如果地址为空并且请求为true则不跳转,否则跳转
690
                         try {
705
                         try {
706
+                            Log.d("网络跳转","自动拉起111")
691
                             if ((it.authUrl.isNullOrEmpty() || it.appPackage.isNullOrEmpty()) && it.netSucessFlag) {
707
                             if ((it.authUrl.isNullOrEmpty() || it.appPackage.isNullOrEmpty()) && it.netSucessFlag) {
692
                                 //请求成功但地址为空,不跳转
708
                                 //请求成功但地址为空,不跳转
693
                                 canClickFlag = true
709
                                 canClickFlag = true
748
               }
764
               }
749
           }*/
765
           }*/
750
         viewModel.viewModelScope.launch {
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
                     SystemUtil.updateTimeFlag = false
769
                     SystemUtil.updateTimeFlag = false
754
                     ManageApplication.setSysTime(it)
770
                     ManageApplication.setSysTime(it)
755
                     LogShow("当前设置的时间是" + it + "|||" + SystemClock.getDateString(it))
771
                     LogShow("当前设置的时间是" + it + "|||" + SystemClock.getDateString(it))
805
             try {
821
             try {
806
                 canClickFlag = true
822
                 canClickFlag = true
807
                 val am = getSystemService(ACTIVITY_SERVICE) as ActivityManager
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
                 //不在判断栈顶activity,现在根据进程名字判断,包含则不拉起(增加条件,当前页面为管控桌面则拉起)
824
                 //不在判断栈顶activity,现在根据进程名字判断,包含则不拉起(增加条件,当前页面为管控桌面则拉起)
819
                 var manageFlag = false
825
                 var manageFlag = false
820
                 val runningTasks = am.getRunningTasks(1)
826
                 val runningTasks = am.getRunningTasks(1)
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
     private fun showSucessToast() {
897
     private fun showSucessToast() {
863
         if (isResumeFlag) {
898
         if (isResumeFlag) {
864
             //只有可见状态才提示策略更新
899
             //只有可见状态才提示策略更新
907
         }
942
         }
908
         mBinding.netsetLlayout.setOnClickListener {
943
         mBinding.netsetLlayout.setOnClickListener {
909
             val intent = Intent(Settings.ACTION_WIFI_SETTINGS)
944
             val intent = Intent(Settings.ACTION_WIFI_SETTINGS)
910
-            intent.putExtra("full_screen",true)
945
+            intent.putExtra("full_screen", true)
911
             intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
946
             intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
912
             startActivity(intent)
947
             startActivity(intent)
913
         }
948
         }
950
                     StrategyUtils.clearMemory(context, data)
985
                     StrategyUtils.clearMemory(context, data)
951
                     Toaster.show(context.getString(R.string.speedend))
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
             }
1144
             }
1110
             mBinding.userschoolTv.text = name.toString()
1145
             mBinding.userschoolTv.text = name.toString()
1111
             mBinding.usernameTv.text = it.username
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
             Const.backNum = 0
1231
             Const.backNum = 0
1181
             updateAllStrategy()
1232
             updateAllStrategy()
1182
         } else {
1233
         } else {
1183
-            if (!isCreatFlag) {
1234
+           /* if (!isCreatFlag) {
1184
                 //!isCreatFlag表示不是第一次启动时使用useTimeStrategy
1235
                 //!isCreatFlag表示不是第一次启动时使用useTimeStrategy
1185
                 useTimeStrategy(5)
1236
                 useTimeStrategy(5)
1186
             }
1237
             }
1187
-            isCreatFlag = false
1238
+            isCreatFlag = false*/
1239
+            useTimeStrategy(5)
1188
         }
1240
         }
1189
     }
1241
     }
1190
 
1242
 
1429
     }
1481
     }
1430
 
1482
 
1431
     private fun useTimeStrategy(type: Int) {
1483
     private fun useTimeStrategy(type: Int) {
1432
-        LogShow("开始获得时间策略$type")
1484
+        LogShow("锁定了吧,开始获得时间策略$type")
1433
         //获得sputils中的平板锁定策略
1485
         //获得sputils中的平板锁定策略
1434
         try {
1486
         try {
1435
             //如果存储的是锁定则锁定
1487
             //如果存储的是锁定则锁定
1441
                 block = StrategyUtils.getPadTimeStrategy(bean)
1493
                 block = StrategyUtils.getPadTimeStrategy(bean)
1442
             }
1494
             }
1443
             val param = spUtils.getParam(Const.DISABLEPAD, false) as Boolean
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
                 //如果type3表示输入密码解锁,type==2表示远程解锁,这时只要解锁成功,即使不在使用时间也解锁屏幕,所以重置block的状态,但再次熄屏时还是会锁定
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
                     //如果block为真表示锁定,param为false表示手动解锁,则表示重新锁定了,发送锁定日志
1503
                     //如果block为真表示锁定,param为false表示手动解锁,则表示重新锁定了,发送锁定日志
1451
                     postLockLog(3)
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
                     postLockLog(2)
1507
                     postLockLog(2)
1455
                 }
1508
                 }
1456
             }
1509
             }
1457
             if (param || block) {
1510
             if (param || block) {
1458
                 //隐藏账号编辑弹窗
1511
                 //隐藏账号编辑弹窗
1459
-                LogShow("展示锁定状态111")
1460
                 accountDialog?.dismiss()
1512
                 accountDialog?.dismiss()
1461
                 quitAccountDialog?.dismiss()
1513
                 quitAccountDialog?.dismiss()
1462
                 changeCodeDialog?.dismiss()
1514
                 changeCodeDialog?.dismiss()
1465
                 mainLockFlag = true
1517
                 mainLockFlag = true
1466
                 //锁定时可以点击
1518
                 //锁定时可以点击
1467
                 canClickFlag = true
1519
                 canClickFlag = true
1520
+                showLockDialog(true)
1468
             } else {
1521
             } else {
1469
                 mainLockFlag = false
1522
                 mainLockFlag = false
1470
                 autoAppFlag = true
1523
                 autoAppFlag = true
1471
                 mBinding.mainLlayout.visibility = View.VISIBLE
1524
                 mBinding.mainLlayout.visibility = View.VISIBLE
1472
                 mBinding.lockLlayout.visibility = View.GONE
1525
                 mBinding.lockLlayout.visibility = View.GONE
1473
                 hiddenSoft(mBinding.lockEt)
1526
                 hiddenSoft(mBinding.lockEt)
1527
+                showLockDialog(false)
1474
             }
1528
             }
1475
             //如果同时锁定和平板不再可用时间,优先显示锁定提示,锁定接触后显示不再可用时间提示
1529
             //如果同时锁定和平板不再可用时间,优先显示锁定提示,锁定接触后显示不再可用时间提示
1476
             mBinding.locktipsTv.text = if (param) {
1530
             mBinding.locktipsTv.text = if (param) {
1498
                 }
1552
                 }
1499
             }*/
1553
             }*/
1500
             //没有单点登录所以不再判断
1554
             //没有单点登录所以不再判断
1501
-            LogShow("打开app拉起请求,type==$type")
1555
+            LogShow("锁定了吧打开app拉起请求,type==$type")
1502
             userBean?.let {
1556
             userBean?.let {
1503
                 netAutoAppFlag = true
1557
                 netAutoAppFlag = true
1504
                 viewModel.postAutoAppDetail(it.regionid)
1558
                 viewModel.postAutoAppDetail(it.regionid)
1797
                 viewModel.postExitReseted(sn)
1851
                 viewModel.postExitReseted(sn)
1798
                 startIntentActivity(MainActivity().javaClass)
1852
                 startIntentActivity(MainActivity().javaClass)
1799
             }
1853
             }
1800
-            Const.CODE999.toString()->{
1854
+
1855
+            Const.CODE999.toString() -> {
1801
                 viewModel.postSyncTime(true)
1856
                 viewModel.postSyncTime(true)
1802
             }
1857
             }
1803
 
1858
 
1882
                         loginStudentBean.usersex = 0
1937
                         loginStudentBean.usersex = 0
1883
                     }
1938
                     }
1884
                     loginStudentBean.sn = ManageApplication.getDeviceInfo()
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
                     updateUser = true
1944
                     updateUser = true
1890
                     viewModel.editLogin(loginStudentBean)
1945
                     viewModel.editLogin(loginStudentBean)
1891
                 } catch (e: Exception) {
1946
                 } catch (e: Exception) {
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
     private fun getAppStoreList() {
2137
     private fun getAppStoreList() {
2035
         try {
2138
         try {
2036
             if (appStroeList.size == 0) {
2139
             if (appStroeList.size == 0) {
2060
             startIntentActivity(MainActivity().javaClass)
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
         val pushBean = LogPushBean()
2171
         val pushBean = LogPushBean()
2068
         pushBean.pushType = pushType
2172
         pushBean.pushType = pushType
2069
         ManageApplication.getDeviceInfo()?.let {
2173
         ManageApplication.getDeviceInfo()?.let {
2479
         if (!Const.startAppStoreFlag) {
2583
         if (!Const.startAppStoreFlag) {
2480
             val appList = AppUtils.GetAppList(this)
2584
             val appList = AppUtils.GetAppList(this)
2481
             val firstOrNull = appList.firstOrNull { it.packageName.equals(downItem.pkgName) }
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
                     InstallUtils.addInstall(downItem.savepath, downItem.pkgName, downItem.appName)
2588
                     InstallUtils.addInstall(downItem.savepath, downItem.pkgName, downItem.appName)
2485
                 }
2589
                 }
2486
-            }else{
2590
+            } else {
2487
                 InstallUtils.addInstall(downItem.savepath, downItem.pkgName, downItem.appName)
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

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