浏览代码

1.添加应用安装提示。

2.添加定位自动回调。
3.锁屏时释放允许点击事件触发。
20241218TB223FC(测试jar包)
wangwanlei 11 个月前
父节点
当前提交
d715eff276

+ 2
- 1
app/src/main/AndroidManifest.xml 查看文件

40
     <uses-permission
40
     <uses-permission
41
         android:name="android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS"
41
         android:name="android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS"
42
         tools:ignore="ProtectedPermissions" />
42
         tools:ignore="ProtectedPermissions" />
43
+    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
43
 
44
 
44
     <application
45
     <application
45
         android:name="com.xhly.manageapp.ManageApplication"
46
         android:name="com.xhly.manageapp.ManageApplication"
63
             android:name="com.baidu.lbsapi.API_KEY"
64
             android:name="com.baidu.lbsapi.API_KEY"
64
             android:value="9eZF1Cg9JYIzme7dSnG8rmeUj7ET3lK1" >
65
             android:value="9eZF1Cg9JYIzme7dSnG8rmeUj7ET3lK1" >
65
         </meta-data>
66
         </meta-data>
66
-        <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"> </service>
67
+        <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" android:foregroundServiceType="location"> </service>
67
         <activity
68
         <activity
68
             android:name="com.xhly.manageapp.ui.main.activity.MainActivity"
69
             android:name="com.xhly.manageapp.ui.main.activity.MainActivity"
69
             android:exported="true"
70
             android:exported="true"

+ 18
- 9
app/src/main/java/com/xhly/manageapp/ui/main/activity/MainActivity.kt 查看文件

7
 import android.Manifest
7
 import android.Manifest
8
 import android.annotation.SuppressLint
8
 import android.annotation.SuppressLint
9
 import android.app.ActivityManager
9
 import android.app.ActivityManager
10
+import android.app.Notification
11
+import android.app.PendingIntent
10
 import android.content.ComponentName
12
 import android.content.ComponentName
11
 import android.content.Context
13
 import android.content.Context
12
 import android.content.Intent
14
 import android.content.Intent
26
 import android.widget.TextView
28
 import android.widget.TextView
27
 import android.widget.Toast
29
 import android.widget.Toast
28
 import androidx.activity.addCallback
30
 import androidx.activity.addCallback
29
-import androidx.lifecycle.Lifecycle
30
-import androidx.lifecycle.LifecycleRegistry
31
 import androidx.lifecycle.lifecycleScope
31
 import androidx.lifecycle.lifecycleScope
32
 import androidx.lifecycle.viewModelScope
32
 import androidx.lifecycle.viewModelScope
33
 import androidx.recyclerview.widget.GridLayoutManager
33
 import androidx.recyclerview.widget.GridLayoutManager
88
 import com.xhly.manageapp.utils.StrategyUtils
88
 import com.xhly.manageapp.utils.StrategyUtils
89
 import com.xhly.manageapp.workmanager.TimingWorker
89
 import com.xhly.manageapp.workmanager.TimingWorker
90
 import kotlinx.coroutines.Dispatchers
90
 import kotlinx.coroutines.Dispatchers
91
-import kotlinx.coroutines.flow.collect
92
 import kotlinx.coroutines.launch
91
 import kotlinx.coroutines.launch
93
 import kotlinx.coroutines.withContext
92
 import kotlinx.coroutines.withContext
94
 import java.io.File
93
 import java.io.File
312
                                            if (app.versionNum > currentApp.versionNum) {
311
                                            if (app.versionNum > currentApp.versionNum) {
313
                                                //版本低则更新安装。
312
                                                //版本低则更新安装。
314
                                                //AppDownLoadUtils.addToDownloadQueue(apkPath, appName,app.appPackage)
313
                                                //AppDownLoadUtils.addToDownloadQueue(apkPath, appName,app.appPackage)
315
-                                               DownLoadUtils.addDownload(apkPath,app.appPackage,File(file.toString(), "$appName.apk").toString(),app.appPackage)
314
+                                               DownLoadUtils.addDownload(apkPath,app.appPackage,File(file.toString(), "$appName.apk").toString(),app.appPackage,appName)
316
                                            }
315
                                            }
317
                                        } else {
316
                                        } else {
318
                                            //不存在,直接下载安装。
317
                                            //不存在,直接下载安装。
319
                                            //AppDownLoadUtils.addToDownloadQueue(apkPath, appName,app.appPackage)
318
                                            //AppDownLoadUtils.addToDownloadQueue(apkPath, appName,app.appPackage)
320
-                                           DownLoadUtils.addDownload(apkPath,app.appPackage,File(file.toString(), "$appName.apk").toString(),app.appPackage)
319
+                                           DownLoadUtils.addDownload(apkPath,app.appPackage,File(file.toString(), "$appName.apk").toString(),app.appPackage,appName)
321
                                        }
320
                                        }
322
                                    } catch (e: Exception) {
321
                                    } catch (e: Exception) {
323
                                        LogShow("问题" + e.toString())
322
                                        LogShow("问题" + e.toString())
500
                             }
499
                             }
501
                         }
500
                         }
502
                     }else{
501
                     }else{
502
+                        canClickFlag=true
503
                         autoAppFlag=false
503
                         autoAppFlag=false
504
                         startIntentActivity(MainActivity().javaClass)
504
                         startIntentActivity(MainActivity().javaClass)
505
                     }
505
                     }
718
             }
718
             }
719
         }
719
         }
720
         Const.backNum++
720
         Const.backNum++
721
-        if (mainLockFlag&&lastTimeLong+10*60*1000<System.currentTimeMillis()){
722
-            //如果时锁定状态进入这个页面则请求一次策略,限制为10分钟
721
+        if (mainLockFlag&&lastTimeLong+5*60*1000<System.currentTimeMillis()){
722
+            //如果时锁定状态进入这个页面则请求一次策略,限制为5分钟
723
             lastTimeLong=System.currentTimeMillis()
723
             lastTimeLong=System.currentTimeMillis()
724
             updateAllStrategy()
724
             updateAllStrategy()
725
         }else if (Const.backNum > Const.UPDATESTRATEGYNUM){
725
         }else if (Const.backNum > Const.UPDATESTRATEGYNUM){
773
         viewModel.uploadAppStrategy()
773
         viewModel.uploadAppStrategy()
774
         viewModel.postAppNetWhiteList()
774
         viewModel.postAppNetWhiteList()
775
         updatePadInfo()
775
         updatePadInfo()
776
+        updateAppInstallInfo()
776
     }
777
     }
777
 
778
 
778
     private fun updateAppInstallInfo() {
779
     private fun updateAppInstallInfo() {
848
                 }
849
                 }
849
                 if (!(currentYear == year && currentDay == day)) {
850
                 if (!(currentYear == year && currentDay == day)) {
850
                     viewModel.updatePadInfo(PadInfoUtils().getPadInfo(this, iccid))
851
                     viewModel.updatePadInfo(PadInfoUtils().getPadInfo(this, iccid))
852
+                    updateAppInstallInfo()
851
                     if (lastTimeLong+10*60*1000<System.currentTimeMillis()){
853
                     if (lastTimeLong+10*60*1000<System.currentTimeMillis()){
852
                         //每日上传信息时获取策略,如果10分钟之内获取过则不再获取
854
                         //每日上传信息时获取策略,如果10分钟之内获取过则不再获取
853
                         lastTimeLong=System.currentTimeMillis()
855
                         lastTimeLong=System.currentTimeMillis()
929
         option.locationMode=LocationClientOption.LocationMode.Hight_Accuracy
931
         option.locationMode=LocationClientOption.LocationMode.Hight_Accuracy
930
         option.setCoorType("bd09ll")
932
         option.setCoorType("bd09ll")
931
         option.setFirstLocType(LocationClientOption.FirstLocType.ACCURACY_IN_FIRST_LOC)
933
         option.setFirstLocType(LocationClientOption.FirstLocType.ACCURACY_IN_FIRST_LOC)
932
-        option.setScanSpan(1000*60*5)
934
+        option.setScanSpan(0)
933
         option.setOpenGnss(true)
935
         option.setOpenGnss(true)
934
         option.setLocationNotify(true)
936
         option.setLocationNotify(true)
935
         option.setEnableSimulateGnss(false)
937
         option.setEnableSimulateGnss(false)
936
         option.setNeedNewVersionRgc(true)
938
         option.setNeedNewVersionRgc(true)
937
         option.setIsNeedAddress(true)
939
         option.setIsNeedAddress(true)
940
+        //设置打开自动回调位置模式,该开关打开后,期间只要定位SDK检测到位置变化就会主动回调给开发者,该模式下开发者无需再关心定位间隔是多少,定位SDK本身发现位置变化就会及时回调给开发者
941
+        option.setOpenAutoNotifyMode();
942
+        //设置打开自动回调位置模式,该开关打开后,期间只要定位SDK检测到位置变化就会主动回调给开发者
943
+        option.setOpenAutoNotifyMode(3000,1, LocationClientOption.LOC_SENSITIVITY_HIGHT);
938
         locationClient?.locOption=option
944
         locationClient?.locOption=option
939
         locationClient?.registerLocationListener(object :BDAbstractLocationListener(){
945
         locationClient?.registerLocationListener(object :BDAbstractLocationListener(){
940
             override fun onReceiveLocation(bdLocation: BDLocation) {
946
             override fun onReceiveLocation(bdLocation: BDLocation) {
966
                 }catch (e:Exception){
972
                 }catch (e:Exception){
967
                     LogShow("没有位置问题"+e.toString())
973
                     LogShow("没有位置问题"+e.toString())
968
                 }
974
                 }
975
+                locationClient?.stop()
969
             }
976
             }
970
 
977
 
971
         })
978
         })
994
                 //隐藏账号编辑弹窗
1001
                 //隐藏账号编辑弹窗
995
                 accountDialog?.dismiss()
1002
                 accountDialog?.dismiss()
996
                 mainLockFlag=true
1003
                 mainLockFlag=true
1004
+                //锁定时可以点击
1005
+                canClickFlag=true
997
             } else {
1006
             } else {
998
                 mainLockFlag=false
1007
                 mainLockFlag=false
999
                 autoAppFlag=true
1008
                 autoAppFlag=true
1559
 
1568
 
1560
     override fun onSuccess(downItem: DownloadItem) {
1569
     override fun onSuccess(downItem: DownloadItem) {
1561
        /* ManageApplication.installPackage(downItem.savepath)*/
1570
        /* ManageApplication.installPackage(downItem.savepath)*/
1562
-        InstallUtils.addInstall(downItem.savepath,downItem.pkgName)
1571
+        InstallUtils.addInstall(downItem.savepath,downItem.pkgName,downItem.appName)
1563
     }
1572
     }
1564
 
1573
 
1565
     override fun onFailure(downItem: DownloadItem, errMsg: String) {
1574
     override fun onFailure(downItem: DownloadItem, errMsg: String) {

+ 1
- 1
app/src/main/java/com/xhly/manageapp/utils/AppDownLoadUtils.kt 查看文件

54
                         if (successful) {
54
                         if (successful) {
55
                            /* UIEvent(Const.INSTALL_FORCEAPP).setMessage(File(name, "$appName.apk").toString()).post()*/
55
                            /* UIEvent(Const.INSTALL_FORCEAPP).setMessage(File(name, "$appName.apk").toString()).post()*/
56
                            /* ManageApplication.installPackage(File(name, "$appName.apk").toString())*/
56
                            /* ManageApplication.installPackage(File(name, "$appName.apk").toString())*/
57
-                            InstallUtils.addInstall(File(name, "$appName.apk").toString(),pkgName)
57
+                            InstallUtils.addInstall(File(name, "$appName.apk").toString(),pkgName,appName)
58
                         } else {
58
                         } else {
59
                             currentRetry++
59
                             currentRetry++
60
                         }
60
                         }

+ 4
- 4
app/src/main/java/com/xhly/manageapp/utils/DownLoadUtils.kt 查看文件

38
     /**
38
     /**
39
      * 下载文件
39
      * 下载文件
40
      */
40
      */
41
-    fun addDownload(url: String, tag: String, savepath: String,pkgName: String) {
41
+    fun addDownload(url: String, tag: String, savepath: String,pkgName: String,appName:String) {
42
         LogShow("添加下载任务"+savepath)
42
         LogShow("添加下载任务"+savepath)
43
         var isHave = false
43
         var isHave = false
44
         for (element in queue) {
44
         for (element in queue) {
47
             }
47
             }
48
         }
48
         }
49
         if (!isHave) {
49
         if (!isHave) {
50
-            queue.add(DownloadItem(url, tag, savepath, 0,pkgName))
50
+            queue.add(DownloadItem(url, tag, savepath, 0,pkgName,appName))
51
         } else {
51
         } else {
52
             for (downloadCallback in callbackList) {
52
             for (downloadCallback in callbackList) {
53
-                downloadCallback.onFailure(DownloadItem(url, tag, savepath, 0,pkgName), "已经在下载队列")
53
+                downloadCallback.onFailure(DownloadItem(url, tag, savepath, 0,pkgName,appName), "已经在下载队列")
54
             }
54
             }
55
         }
55
         }
56
         downloadAction()
56
         downloadAction()
132
     }
132
     }
133
 }
133
 }
134
 
134
 
135
-data class DownloadItem(val url: String, val tag: String, val savepath: String, var progress: Int,var pkgName:String)
135
+data class DownloadItem(val url: String, val tag: String, val savepath: String, var progress: Int,var pkgName:String,var appName:String)
136
 
136
 
137
 interface DownloadCallback {
137
 interface DownloadCallback {
138
     fun onStart(downItem: DownloadItem)
138
     fun onStart(downItem: DownloadItem)

+ 5
- 3
app/src/main/java/com/xhly/manageapp/utils/InstallUtils.kt 查看文件

1
 package com.xhly.manageapp.utils
1
 package com.xhly.manageapp.utils
2
 
2
 
3
 import android.app.Activity
3
 import android.app.Activity
4
+import com.hjq.toast.Toaster
4
 import com.xhly.corelib.utils.LogShow
5
 import com.xhly.corelib.utils.LogShow
5
 import com.xhly.manageapp.ManageApplication
6
 import com.xhly.manageapp.ManageApplication
6
 import kotlinx.coroutines.CoroutineScope
7
 import kotlinx.coroutines.CoroutineScope
33
         }
34
         }
34
     }
35
     }
35
 
36
 
36
-    fun addInstall(savepath: String, packageName: String) {
37
+    fun addInstall(savepath: String, packageName: String,appName: String) {
37
         var isHave = false
38
         var isHave = false
38
         for (element in queue) {
39
         for (element in queue) {
39
             if (element.packageName === packageName) {
40
             if (element.packageName === packageName) {
41
             }
42
             }
42
         }
43
         }
43
         if (!isHave) {
44
         if (!isHave) {
44
-            queue.add(InstallItem( savepath, packageName))
45
+            queue.add(InstallItem( savepath, packageName,appName))
45
         }
46
         }
46
         installAction()
47
         installAction()
47
     }
48
     }
62
                     isInstalling = true
63
                     isInstalling = true
63
                     //installApp(installItem.activity, installItem.savepath, installItem.packageName)
64
                     //installApp(installItem.activity, installItem.savepath, installItem.packageName)
64
                     withContext(Dispatchers.Main){
65
                     withContext(Dispatchers.Main){
66
+                        Toaster.show(installItem.appName+"正在安装")
65
                         ManageApplication.installPackage(installItem.savepath)
67
                         ManageApplication.installPackage(installItem.savepath)
66
                     }
68
                     }
67
                     while (isInstalling) {
69
                     while (isInstalling) {
83
     }
85
     }
84
 }
86
 }
85
 
87
 
86
-data class InstallItem(val savepath: String, val packageName: String)
88
+data class InstallItem(val savepath: String, val packageName: String,val appName:String)

+ 1
- 0
app/src/main/java/com/xhly/manageapp/workmanager/TimingWorker.kt 查看文件

82
                 LogShow("没有位置问题"+e.toString())
82
                 LogShow("没有位置问题"+e.toString())
83
             }
83
             }
84
 */
84
 */
85
+            UIEvent(Const.STARTLOCATION).post()
85
             userBean?.let {
86
             userBean?.let {
86
                 val map=HashMap<String,Any>()
87
                 val map=HashMap<String,Any>()
87
                 map["sn"]=ManageApplication.getDeviceInfo()?:""
88
                 map["sn"]=ManageApplication.getDeviceInfo()?:""

正在加载...
取消
保存