|
@@ -239,131 +239,146 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(),Download
|
239
|
239
|
viewModel.viewModelScope.launch {
|
240
|
240
|
//在这里执行获得策略的操作,用来处理在后台时的数据处理。
|
241
|
241
|
viewModel.listAppData.collect{ modelList ->
|
242
|
|
- //存储商店应用包名到本地,并且存储商店应用列表数据到本地集合
|
243
|
|
- val appNameList = arrayListOf<String>()
|
244
|
|
- val whiteList = arrayListOf<String>()
|
245
|
|
- modelList.forEach {
|
246
|
|
- appNameList.add(it.appPackage)
|
247
|
|
- if (it.whited == 1) {
|
248
|
|
- whiteList.add(it.appPackage)
|
|
242
|
+ modelList?.let {
|
|
243
|
+ //存储商店应用包名到本地,并且存储商店应用列表数据到本地集合
|
|
244
|
+ val appNameList = arrayListOf<String>()
|
|
245
|
+ val whiteList = arrayListOf<String>()
|
|
246
|
+ modelList.forEach {
|
|
247
|
+ appNameList.add(it.appPackage)
|
|
248
|
+ if (it.whited == 1) {
|
|
249
|
+ whiteList.add(it.appPackage)
|
|
250
|
+ }
|
249
|
251
|
}
|
250
|
|
- }
|
251
|
|
- ManageApplication.addAppWhiteRule(whiteList)
|
252
|
|
- spUtils.saveJson(Const.APPSTOREDATAKEY,modelList)
|
253
|
|
- //获得应用集合,必装应用和推荐应用,再加上预装应用(预装应用直接隐藏),其余应用需要静默卸载,必装应用需要进行静默下载和安装。安装应用从forceapp接口获取
|
254
|
|
- val appList = AppUtils.GetAppList(this@MainActivity)
|
255
|
|
- val firstAppList = arrayListOf<String>()
|
256
|
|
- try {
|
257
|
|
- //获得预装应用的包名
|
258
|
|
- val currentList =
|
259
|
|
- currentSpUtils.getFromJson(
|
260
|
|
- Const.FIRSTAPPLIST,
|
261
|
|
- ArrayList<String>().javaClass
|
262
|
|
- ) as ArrayList<String>
|
263
|
|
- firstAppList.addAll(currentList)
|
264
|
|
- } catch (e: Exception) {
|
265
|
|
- LogShow("冻结失败" + e.toString())
|
266
|
|
- }
|
267
|
|
- appList.forEach { app ->
|
268
|
|
- unInstallAppList.clear()
|
269
|
|
- val filter = modelList.filter { it.appPackage.equals(app.packageName) }
|
270
|
|
- val appInfos = firstAppList.filter { app.packageName.equals(it) }
|
271
|
|
- //接口列表以及初始化列表中不存在则将应用冻结或者卸载,目前是卸载
|
272
|
|
- LogShow("${app.name},被冻结" + (filter.isEmpty() && appInfos.isEmpty()))
|
273
|
|
- if (filter.isEmpty() && appInfos.isEmpty()) {
|
274
|
|
- //ManageApplication.setPackageEnabled(app.packageName, (filter.isNotEmpty()))
|
275
|
|
- unInstallAppList.add(app)
|
276
|
|
- ManageApplication.uninstallPackage(app.packageName)
|
|
252
|
+ ManageApplication.addAppWhiteRule(whiteList)
|
|
253
|
+ spUtils.saveJson(Const.APPSTOREDATAKEY,modelList)
|
|
254
|
+ //获得应用集合,必装应用和推荐应用,再加上预装应用(预装应用直接隐藏),其余应用需要静默卸载,必装应用需要进行静默下载和安装。安装应用从forceapp接口获取
|
|
255
|
+ val appList = AppUtils.GetAppList(this@MainActivity)
|
|
256
|
+ val firstAppList = arrayListOf<String>()
|
|
257
|
+ try {
|
|
258
|
+ //获得预装应用的包名
|
|
259
|
+ val currentList =
|
|
260
|
+ currentSpUtils.getFromJson(
|
|
261
|
+ Const.FIRSTAPPLIST,
|
|
262
|
+ ArrayList<String>().javaClass
|
|
263
|
+ ) as ArrayList<String>
|
|
264
|
+ firstAppList.addAll(currentList)
|
|
265
|
+ } catch (e: Exception) {
|
|
266
|
+ LogShow("冻结失败" + e.toString())
|
277
|
267
|
}
|
|
268
|
+ appList.forEach { app ->
|
|
269
|
+ unInstallAppList.clear()
|
|
270
|
+ val filter = modelList.filter { it.appPackage.equals(app.packageName) }
|
|
271
|
+ val appInfos = firstAppList.filter { app.packageName.equals(it) }
|
|
272
|
+ //接口列表以及初始化列表中不存在则将应用冻结或者卸载,目前是卸载
|
|
273
|
+ LogShow("${app.name},被冻结" + (filter.isEmpty() && appInfos.isEmpty()))
|
|
274
|
+ if (filter.isEmpty() && appInfos.isEmpty()) {
|
|
275
|
+ //ManageApplication.setPackageEnabled(app.packageName, (filter.isNotEmpty()))
|
|
276
|
+ unInstallAppList.add(app)
|
|
277
|
+ ManageApplication.uninstallPackage(app.packageName)
|
|
278
|
+ }
|
|
279
|
+ }
|
|
280
|
+
|
278
|
281
|
}
|
279
|
282
|
}
|
280
|
283
|
}
|
281
|
284
|
|
282
|
285
|
viewModel.viewModelScope.launch {
|
283
|
286
|
viewModel.forceListAppData.collect { modelList ->
|
284
|
|
- //获得必装应用,未安装或者版本较低则更新,先删除目录中的文件
|
285
|
|
- val rxPermissions = RxPermissions(this@MainActivity)
|
286
|
|
- rxPermissions.request(Manifest.permission.REQUEST_INSTALL_PACKAGES)
|
287
|
|
- .subscribe { granted ->
|
288
|
|
- if (granted || ModelNameUtils.IS_LianxX505f()) {
|
289
|
|
- // 权限已授予,执行安装操作
|
290
|
|
- val appList = AppUtils.GetAppList(this@MainActivity)
|
291
|
|
- getExternalFilesDir(null)?.let {
|
292
|
|
- FileUtils.deleteCurrentFlie(it)
|
293
|
|
- }
|
294
|
|
- val file = getExternalFilesDir(null)
|
295
|
|
- modelList.forEach { app ->
|
296
|
|
- try {
|
297
|
|
- //获得已安装的应用判断版本,未安装的则直接静默安装。
|
298
|
|
- val filter =
|
299
|
|
- appList.filter { it.packageName.equals(app.appPackage) }
|
300
|
|
- //列表中不存在,或者版本较低则更新
|
301
|
|
- val apkPath = app.apkPath
|
302
|
|
- val appName = app.appName
|
303
|
|
- if (filter.isNotEmpty()) {
|
304
|
|
- val currentApp = filter[0]
|
305
|
|
- if (app.versionNum > currentApp.versionNum) {
|
306
|
|
- //版本低则更新安装。
|
307
|
|
- //AppDownLoadUtils.addToDownloadQueue(apkPath, appName,app.appPackage)
|
308
|
|
- DownLoadUtils.addDownload(apkPath,app.appPackage,File(file.toString(), "$appName.apk").toString(),app.appPackage)
|
309
|
|
- }
|
310
|
|
- } else {
|
311
|
|
- //不存在,直接下载安装。
|
312
|
|
- //AppDownLoadUtils.addToDownloadQueue(apkPath, appName,app.appPackage)
|
313
|
|
- DownLoadUtils.addDownload(apkPath,app.appPackage,File(file.toString(), "$appName.apk").toString(),app.appPackage)
|
314
|
|
- }
|
315
|
|
- } catch (e: Exception) {
|
316
|
|
- LogShow("问题" + e.toString())
|
317
|
|
- }
|
318
|
|
- }
|
319
|
|
- } else {
|
320
|
|
- // 用户拒绝了安装权限,处理相应逻辑
|
321
|
|
- viewModel.getAppList()
|
322
|
|
- }
|
323
|
|
-
|
324
|
|
- }
|
|
287
|
+ modelList?.let {
|
|
288
|
+ //获得必装应用,未安装或者版本较低则更新,先删除目录中的文件
|
|
289
|
+ val rxPermissions = RxPermissions(this@MainActivity)
|
|
290
|
+ rxPermissions.request(Manifest.permission.REQUEST_INSTALL_PACKAGES)
|
|
291
|
+ .subscribe { granted ->
|
|
292
|
+ if (granted || ModelNameUtils.IS_LianxX505f()) {
|
|
293
|
+ // 权限已授予,执行安装操作
|
|
294
|
+ val appList = AppUtils.GetAppList(this@MainActivity)
|
|
295
|
+ getExternalFilesDir(null)?.let {
|
|
296
|
+ FileUtils.deleteCurrentFlie(it)
|
|
297
|
+ }
|
|
298
|
+ val file = getExternalFilesDir(null)
|
|
299
|
+ modelList.forEach { app ->
|
|
300
|
+ try {
|
|
301
|
+ //获得已安装的应用判断版本,未安装的则直接静默安装。
|
|
302
|
+ val filter =
|
|
303
|
+ appList.filter { it.packageName.equals(app.appPackage) }
|
|
304
|
+ //列表中不存在,或者版本较低则更新
|
|
305
|
+ val apkPath = app.apkPath
|
|
306
|
+ val appName = app.appName
|
|
307
|
+ if (filter.isNotEmpty()) {
|
|
308
|
+ val currentApp = filter[0]
|
|
309
|
+ if (app.versionNum > currentApp.versionNum) {
|
|
310
|
+ //版本低则更新安装。
|
|
311
|
+ //AppDownLoadUtils.addToDownloadQueue(apkPath, appName,app.appPackage)
|
|
312
|
+ DownLoadUtils.addDownload(apkPath,app.appPackage,File(file.toString(), "$appName.apk").toString(),app.appPackage)
|
|
313
|
+ }
|
|
314
|
+ } else {
|
|
315
|
+ //不存在,直接下载安装。
|
|
316
|
+ //AppDownLoadUtils.addToDownloadQueue(apkPath, appName,app.appPackage)
|
|
317
|
+ DownLoadUtils.addDownload(apkPath,app.appPackage,File(file.toString(), "$appName.apk").toString(),app.appPackage)
|
|
318
|
+ }
|
|
319
|
+ } catch (e: Exception) {
|
|
320
|
+ LogShow("问题" + e.toString())
|
|
321
|
+ }
|
|
322
|
+ }
|
|
323
|
+ } else {
|
|
324
|
+ // 用户拒绝了安装权限,处理相应逻辑
|
|
325
|
+ viewModel.getAppList()
|
|
326
|
+ }
|
|
327
|
+
|
|
328
|
+ }
|
|
329
|
+
|
|
330
|
+ }
|
325
|
331
|
}
|
326
|
332
|
|
327
|
333
|
}
|
328
|
334
|
|
329
|
335
|
viewModel.viewModelScope.launch {
|
330
|
336
|
viewModel.strategyData.collect {
|
331
|
|
- spUtils.saveJson(Const.STRATEGYBEANKEY, it)
|
332
|
|
- StrategyUtils.setStrategy(it)
|
333
|
|
- useTimeStrategy()
|
334
|
|
- updateStrategyFlag = true
|
335
|
|
- if (updateTimeFlag) {
|
336
|
|
- showSucessToast()
|
337
|
|
- }
|
|
337
|
+ it?.let {
|
|
338
|
+ spUtils.saveJson(Const.STRATEGYBEANKEY, it)
|
|
339
|
+ StrategyUtils.setStrategy(it)
|
|
340
|
+ useTimeStrategy()
|
|
341
|
+ updateStrategyFlag = true
|
|
342
|
+ if (updateTimeFlag) {
|
|
343
|
+ showSucessToast()
|
|
344
|
+ }
|
|
345
|
+
|
|
346
|
+ }
|
338
|
347
|
}
|
339
|
348
|
}
|
340
|
349
|
|
341
|
350
|
viewModel.viewModelScope.launch {
|
342
|
351
|
viewModel.appStrategyData.collect {
|
343
|
352
|
//存储app时间策略
|
344
|
|
- spUtils.saveJson(Const.APPSTRATEGYBEANKEY, it)
|
345
|
|
- updateTimeFlag = true
|
346
|
|
- if (updateStrategyFlag) {
|
347
|
|
- showSucessToast()
|
348
|
|
- }
|
|
353
|
+ it?.let {
|
|
354
|
+ spUtils.saveJson(Const.APPSTRATEGYBEANKEY, it)
|
|
355
|
+ updateTimeFlag = true
|
|
356
|
+ if (updateStrategyFlag) {
|
|
357
|
+ showSucessToast()
|
|
358
|
+ }
|
|
359
|
+ }
|
349
|
360
|
}
|
350
|
361
|
}
|
351
|
362
|
|
352
|
363
|
viewModel.viewModelScope.launch {
|
353
|
364
|
viewModel.padInfoData.collect {
|
354
|
365
|
//存储信息上传时间
|
355
|
|
- if (it) {
|
356
|
|
- spUtils.setParam(Const.PADINFOTIMEKEY, System.currentTimeMillis())
|
|
366
|
+ it?.let {
|
|
367
|
+ if (it) {
|
|
368
|
+ spUtils.setParam(Const.PADINFOTIMEKEY, System.currentTimeMillis())
|
|
369
|
+ }
|
357
|
370
|
}
|
358
|
371
|
}
|
359
|
372
|
}
|
360
|
373
|
|
361
|
374
|
viewModel.viewModelScope.launch {
|
362
|
375
|
viewModel.loginOutData.collect {
|
363
|
|
- if (it) {
|
364
|
|
- loginOut()
|
365
|
|
- } else {
|
366
|
|
- Toast(getString(R.string.codeerror))
|
|
376
|
+ it?.let {
|
|
377
|
+ if (it) {
|
|
378
|
+ loginOut()
|
|
379
|
+ } else {
|
|
380
|
+ Toast(getString(R.string.codeerror))
|
|
381
|
+ }
|
367
|
382
|
}
|
368
|
383
|
}
|
369
|
384
|
}
|
|
@@ -371,26 +386,29 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(),Download
|
371
|
386
|
viewModel.viewModelScope.launch {
|
372
|
387
|
viewModel.updateInfoData.collect {
|
373
|
388
|
//成功则保存不在提交
|
374
|
|
- if (it) {
|
|
389
|
+ if (it!=null&&it) {
|
375
|
390
|
spUtils.setParam(Const.PADUPDATETIMEKEY, System.currentTimeMillis())
|
376
|
391
|
}
|
377
|
392
|
}
|
378
|
393
|
}
|
379
|
394
|
|
380
|
395
|
viewModel.viewModelScope.launch {
|
381
|
|
-
|
382
|
396
|
viewModel.schoolSetData.collect {
|
383
|
|
- spUtils.saveJson(Const.SCHOOLSETDEVICE, it)
|
384
|
|
- initSchoolSet(it)
|
385
|
|
- mBinding.rv.visibility=View.VISIBLE
|
386
|
|
- updateAppRv()
|
|
397
|
+ it?.let {
|
|
398
|
+ spUtils.saveJson(Const.SCHOOLSETDEVICE, it)
|
|
399
|
+ initSchoolSet(it)
|
|
400
|
+ mBinding.rv.visibility=View.VISIBLE
|
|
401
|
+ updateAppRv()
|
|
402
|
+ }
|
387
|
403
|
}
|
388
|
404
|
}
|
389
|
405
|
|
390
|
406
|
viewModel.viewModelScope.launch {
|
391
|
407
|
|
392
|
408
|
viewModel.netWhiteListData.collect {
|
393
|
|
- StrategyUtils.setNetWhiteList(it)
|
|
409
|
+ it?.let {
|
|
410
|
+ StrategyUtils.setNetWhiteList(it)
|
|
411
|
+ }
|
394
|
412
|
}
|
395
|
413
|
|
396
|
414
|
}
|
|
@@ -399,84 +417,92 @@ class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>(),Download
|
399
|
417
|
viewModel.viewModelScope.launch {
|
400
|
418
|
|
401
|
419
|
viewModel.logResultData.collect {
|
402
|
|
- if (it.enableFlag) {
|
403
|
|
- when (it.pushType) {
|
404
|
|
- 2 -> {
|
405
|
|
- spUtils.setParam(Const.DISABLEPAD, false)
|
406
|
|
- useTimeStrategy()
|
407
|
|
- }
|
|
420
|
+ it?.let {
|
|
421
|
+ if (it.enableFlag) {
|
|
422
|
+ when (it.pushType) {
|
|
423
|
+ 2 -> {
|
|
424
|
+ spUtils.setParam(Const.DISABLEPAD, false)
|
|
425
|
+ useTimeStrategy()
|
|
426
|
+ }
|
408
|
427
|
|
409
|
|
- 3 -> {
|
410
|
|
- val appList = AppUtils.GetAppList(this@MainActivity)
|
411
|
|
- StrategyUtils.clearMemory(this@MainActivity, appList)
|
412
|
|
- spUtils.setParam(Const.DISABLEPAD, true)
|
413
|
|
- startIntentActivity(MainActivity().javaClass)
|
414
|
|
- }
|
|
428
|
+ 3 -> {
|
|
429
|
+ val appList = AppUtils.GetAppList(this@MainActivity)
|
|
430
|
+ StrategyUtils.clearMemory(this@MainActivity, appList)
|
|
431
|
+ spUtils.setParam(Const.DISABLEPAD, true)
|
|
432
|
+ startIntentActivity(MainActivity().javaClass)
|
|
433
|
+ }
|
415
|
434
|
|
416
|
|
- 4 -> {
|
417
|
|
- //请求接口更新策略
|
418
|
|
- updateAllStrategy()
|
419
|
|
- }
|
|
435
|
+ 4 -> {
|
|
436
|
+ //请求接口更新策略
|
|
437
|
+ updateAllStrategy()
|
|
438
|
+ }
|
420
|
439
|
|
421
|
|
- 5 -> {
|
422
|
|
- ManageApplication.rebootDevice()
|
423
|
|
- }
|
|
440
|
+ 5 -> {
|
|
441
|
+ ManageApplication.rebootDevice()
|
|
442
|
+ }
|
424
|
443
|
|
425
|
|
- 6 -> {
|
426
|
|
- loginOutSucess()
|
427
|
|
- ManageApplication.launchFactoryReset()
|
428
|
|
- }
|
|
444
|
+ 6 -> {
|
|
445
|
+ loginOutSucess()
|
|
446
|
+ ManageApplication.launchFactoryReset()
|
|
447
|
+ }
|
429
|
448
|
|
430
|
|
- 7 -> {
|
431
|
|
- currentSpUtils.setParam(Const.EXIT_CONTROL, true)
|
432
|
|
- StrategyUtils.releaseControl(this@MainActivity)
|
433
|
|
- }
|
|
449
|
+ 7 -> {
|
|
450
|
+ currentSpUtils.setParam(Const.EXIT_CONTROL, true)
|
|
451
|
+ StrategyUtils.releaseControl(this@MainActivity)
|
|
452
|
+ }
|
434
|
453
|
|
435
|
|
- 8 -> {
|
436
|
|
- loginOut()
|
|
454
|
+ 8 -> {
|
|
455
|
+ loginOut()
|
|
456
|
+ }
|
437
|
457
|
}
|
438
|
458
|
}
|
|
459
|
+
|
439
|
460
|
}
|
440
|
461
|
}
|
441
|
462
|
}
|
442
|
463
|
|
443
|
464
|
viewModel.viewModelScope.launch {
|
444
|
465
|
viewModel.logEventData.collect {
|
445
|
|
- when (it.logEventType) {
|
446
|
|
- EventLog.ACCOUNTQUITEVENT -> {
|
447
|
|
- loginOutSucess()
|
448
|
|
- }
|
449
|
|
- }
|
|
466
|
+ it?.let {
|
|
467
|
+ when (it.logEventType) {
|
|
468
|
+ EventLog.ACCOUNTQUITEVENT -> {
|
|
469
|
+ loginOutSucess()
|
|
470
|
+ }
|
|
471
|
+ }
|
|
472
|
+ }
|
450
|
473
|
}
|
451
|
474
|
}
|
452
|
475
|
|
453
|
476
|
viewModel.viewModelScope.launch {
|
454
|
477
|
viewModel.autoAppData.collect{
|
455
|
|
- //连接不为空,并且应用已安装则跳转应用
|
456
|
|
- /* it.authUrl="com.xhkjedu.xh_control_browser.MainActivity"
|
457
|
|
- it.appPackage="com.xhkjedu.xh_control_browser"*/
|
458
|
|
- LogShow("锁定了吧"+mainLockFlag)
|
459
|
|
- if (!mainLockFlag){
|
460
|
|
- if (it.authUrl!=null&&AppUtils.isAppInstalled(this@MainActivity,it.appPackage)){
|
461
|
|
- spUtils.saveJson(Const.AUTOAPPKEY,it)
|
462
|
|
- startAutoApp(it)
|
463
|
|
- }else{
|
464
|
|
- try {
|
465
|
|
- val autoAppBean = spUtils.getFromJson(Const.AUTOAPPKEY, AutoAppBean().javaClass) as AutoAppBean
|
466
|
|
- if (autoAppBean.authUrl!=null&&AppUtils.isAppInstalled(this@MainActivity,autoAppBean.appPackage)&&!it.netSucessFlag){
|
467
|
|
- startAutoApp(autoAppBean)
|
468
|
|
- }else{
|
|
478
|
+ it?.let {
|
|
479
|
+ //连接不为空,并且应用已安装则跳转应用
|
|
480
|
+ /* it.authUrl="com.xhkjedu.xh_control_browser.MainActivity"
|
|
481
|
+ it.appPackage="com.xhkjedu.xh_control_browser"*/
|
|
482
|
+ LogShow("锁定了吧"+mainLockFlag)
|
|
483
|
+ if (!mainLockFlag){
|
|
484
|
+ if (it.authUrl!=null&&AppUtils.isAppInstalled(this@MainActivity,it.appPackage)){
|
|
485
|
+ spUtils.saveJson(Const.AUTOAPPKEY,it)
|
|
486
|
+ startAutoApp(it)
|
|
487
|
+ }else{
|
|
488
|
+ try {
|
|
489
|
+ val autoAppBean = spUtils.getFromJson(Const.AUTOAPPKEY, AutoAppBean().javaClass) as AutoAppBean
|
|
490
|
+ if (autoAppBean.authUrl!=null&&AppUtils.isAppInstalled(this@MainActivity,autoAppBean.appPackage)&&!it.netSucessFlag){
|
|
491
|
+ startAutoApp(autoAppBean)
|
|
492
|
+ }else{
|
|
493
|
+ canClickFlag=true
|
|
494
|
+ }
|
|
495
|
+ }catch (e:Exception){
|
469
|
496
|
canClickFlag=true
|
470
|
497
|
}
|
471
|
|
- }catch (e:Exception){
|
472
|
|
- canClickFlag=true
|
473
|
498
|
}
|
|
499
|
+ }else{
|
|
500
|
+ autoAppFlag=false
|
|
501
|
+ startIntentActivity(MainActivity().javaClass)
|
474
|
502
|
}
|
475
|
|
- }else{
|
476
|
|
- autoAppFlag=false
|
477
|
|
- startIntentActivity(MainActivity().javaClass)
|
|
503
|
+
|
478
|
504
|
}
|
479
|
|
- }
|
|
505
|
+ }
|
480
|
506
|
}
|
481
|
507
|
getLocation()
|
482
|
508
|
startWorkManager()
|