Browse Source

1.添加应用安装提示。

2.添加定位自动回调。
3.锁屏时释放允许点击事件触发。
20241218TB223FC(测试jar包)
wangwanlei 11 months ago
parent
commit
d715eff276

+ 2
- 1
app/src/main/AndroidManifest.xml View File

@@ -40,6 +40,7 @@
40 40
     <uses-permission
41 41
         android:name="android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS"
42 42
         tools:ignore="ProtectedPermissions" />
43
+    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
43 44
 
44 45
     <application
45 46
         android:name="com.xhly.manageapp.ManageApplication"
@@ -63,7 +64,7 @@
63 64
             android:name="com.baidu.lbsapi.API_KEY"
64 65
             android:value="9eZF1Cg9JYIzme7dSnG8rmeUj7ET3lK1" >
65 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 68
         <activity
68 69
             android:name="com.xhly.manageapp.ui.main.activity.MainActivity"
69 70
             android:exported="true"

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

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

+ 1
- 1
app/src/main/java/com/xhly/manageapp/utils/AppDownLoadUtils.kt View File

@@ -54,7 +54,7 @@ object AppDownLoadUtils {
54 54
                         if (successful) {
55 55
                            /* UIEvent(Const.INSTALL_FORCEAPP).setMessage(File(name, "$appName.apk").toString()).post()*/
56 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 58
                         } else {
59 59
                             currentRetry++
60 60
                         }

+ 4
- 4
app/src/main/java/com/xhly/manageapp/utils/DownLoadUtils.kt View File

@@ -38,7 +38,7 @@ object DownLoadUtils {
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 42
         LogShow("添加下载任务"+savepath)
43 43
         var isHave = false
44 44
         for (element in queue) {
@@ -47,10 +47,10 @@ object DownLoadUtils {
47 47
             }
48 48
         }
49 49
         if (!isHave) {
50
-            queue.add(DownloadItem(url, tag, savepath, 0,pkgName))
50
+            queue.add(DownloadItem(url, tag, savepath, 0,pkgName,appName))
51 51
         } else {
52 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 56
         downloadAction()
@@ -132,7 +132,7 @@ object DownLoadUtils {
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 137
 interface DownloadCallback {
138 138
     fun onStart(downItem: DownloadItem)

+ 5
- 3
app/src/main/java/com/xhly/manageapp/utils/InstallUtils.kt View File

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

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

Loading…
Cancel
Save