浏览代码

1.添加app更新接口。

master
wangwanlei 1年前
父节点
当前提交
30b05ff77c

+ 25
- 0
app/src/main/java/com/xhly/manageapp/bean/UpdateBean.kt 查看文件

1
+package com.xhly.manageapp.bean
2
+
3
+class UpdateBean {
4
+    /**
5
+     * 用户id
6
+     */
7
+    var userid = 0L
8
+
9
+    /**
10
+     * 类型:1商店版本2桌面版本
11
+     */
12
+    var ctype = 2
13
+
14
+    /**
15
+     * 设备号
16
+     */
17
+    var sn = ""
18
+
19
+    /**
20
+     * 客户端版本
21
+     */
22
+    var cversion = ""
23
+    var schoolid = 0L
24
+    var regionid = 0L
25
+}

+ 2
- 2
app/src/main/java/com/xhly/manageapp/bean/log/PadInfoBean.kt 查看文件

69
     /**
69
     /**
70
      * 学校id
70
      * 学校id
71
      */
71
      */
72
-    var schoolid = 0
72
+    var schoolid = 0L
73
 
73
 
74
     /**
74
     /**
75
      * 区域id
75
      * 区域id
76
      */
76
      */
77
-    var regionid = 0
77
+    var regionid = 0L
78
 }
78
 }

+ 35
- 3
app/src/main/java/com/xhly/manageapp/bean/user/UserBean.kt 查看文件

1
 package com.xhly.manageapp.bean.user
1
 package com.xhly.manageapp.bean.user
2
 
2
 
3
 class UserBean {
3
 class UserBean {
4
-    var userid = 0L
5
-    var schoolid = 0
4
+    //用于记录登录是否成功
5
+    var xhlyLoginSucess=true
6
+    //记录登录返回的msg
7
+    var xhlyLoginMessage:String?=""
8
+
9
+    var userid = 1L
10
+    var schoolid = 1L
6
 
11
 
7
     //区域码
12
     //区域码
8
-    var regionid = 0
13
+    var regionid = 1L
14
+
15
+    var username: String? = null
16
+    var loginname: String? = null
17
+    var classid: Int? = null
18
+    var loginpwd:String=""
19
+
20
+    /**
21
+     * 管控状态1管控中2解除管控
22
+     */
23
+    var control=1
24
+
25
+    /**
26
+     *手机号
27
+     */
28
+    var userphone:String?=null
29
+
30
+    /**
31
+     * 版本
32
+     */
33
+    var rversion=0L
34
+
35
+    /**
36
+     * Xh-Token-Key
37
+     */
38
+    var Xh_Token_Key:String?=null
39
+
40
+    var Xh_Token_Value:String?=null
9
 }
41
 }

+ 11
- 0
app/src/main/java/com/xhly/manageapp/network/UriAdress.kt 查看文件

35
      * 设备详情--添加和更新
35
      * 设备详情--添加和更新
36
      */
36
      */
37
     const val PADDETAILADD = "/deviceDetail/add"
37
     const val PADDETAILADD = "/deviceDetail/add"
38
+
39
+    /**
40
+     *获得客户端更新
41
+     */
42
+    const val CLIENT_ADD = "/client/add"
43
+
44
+    /**
45
+     * 登录接口
46
+     */
47
+    const val ULOGIN_LOGIN="/ulogin/login"
48
+
38
 }
49
 }

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

7
 import android.content.Context
7
 import android.content.Context
8
 import android.content.Intent
8
 import android.content.Intent
9
 import android.content.IntentFilter
9
 import android.content.IntentFilter
10
+import android.content.pm.PackageManager
10
 import android.graphics.Color
11
 import android.graphics.Color
11
-import android.os.Build
12
 import android.provider.Settings
12
 import android.provider.Settings
13
 import android.view.View
13
 import android.view.View
14
 import android.widget.Button
14
 import android.widget.Button
16
 import android.widget.TextView
16
 import android.widget.TextView
17
 import android.widget.Toast
17
 import android.widget.Toast
18
 import androidx.activity.addCallback
18
 import androidx.activity.addCallback
19
+import androidx.multidex.BuildConfig
19
 import androidx.recyclerview.widget.GridLayoutManager
20
 import androidx.recyclerview.widget.GridLayoutManager
20
 import androidx.work.PeriodicWorkRequest
21
 import androidx.work.PeriodicWorkRequest
21
 import androidx.work.WorkManager
22
 import androidx.work.WorkManager
27
 import com.xhly.corelib.eventbus.UIEvent
28
 import com.xhly.corelib.eventbus.UIEvent
28
 import com.xhly.corelib.utils.AppUtils
29
 import com.xhly.corelib.utils.AppUtils
29
 import com.xhly.corelib.utils.CustomOSUtils
30
 import com.xhly.corelib.utils.CustomOSUtils
30
-import com.xhly.corelib.utils.FileSizeUtils
31
 import com.xhly.corelib.utils.LogShow
31
 import com.xhly.corelib.utils.LogShow
32
-import com.xhly.corelib.utils.PhoneInfoUtils
33
 import com.xhly.corelib.utils.SystemUtil
32
 import com.xhly.corelib.utils.SystemUtil
34
 import com.xhly.manageapp.AppAdapter
33
 import com.xhly.manageapp.AppAdapter
35
 import com.xhly.manageapp.ManageApplication
34
 import com.xhly.manageapp.ManageApplication
36
 import com.xhly.manageapp.R
35
 import com.xhly.manageapp.R
37
 import com.xhly.manageapp.bean.EventLog
36
 import com.xhly.manageapp.bean.EventLog
37
+import com.xhly.manageapp.bean.UpdateBean
38
 import com.xhly.manageapp.bean.log.LogdOperateBean
38
 import com.xhly.manageapp.bean.log.LogdOperateBean
39
 import com.xhly.manageapp.bean.strategy.StrategyBean
39
 import com.xhly.manageapp.bean.strategy.StrategyBean
40
+import com.xhly.manageapp.bean.user.UserBean
40
 import com.xhly.manageapp.broadcastreceiver.AppInstallReceiver
41
 import com.xhly.manageapp.broadcastreceiver.AppInstallReceiver
41
-import com.xhly.manageapp.broadcastreceiver.SDReceiver
42
 import com.xhly.manageapp.databinding.ActivityMainBinding
42
 import com.xhly.manageapp.databinding.ActivityMainBinding
43
 import com.xhly.manageapp.service.ManageAccessibilityService
43
 import com.xhly.manageapp.service.ManageAccessibilityService
44
 import com.xhly.manageapp.service.websocket.AppSocketService
44
 import com.xhly.manageapp.service.websocket.AppSocketService
55
 class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>() {
55
 class MainActivity : BaseActivity<MainViewModel, ActivityMainBinding>() {
56
     lateinit var adapter: AppAdapter
56
     lateinit var adapter: AppAdapter
57
 
57
 
58
-    /*private var csdkManager = CSDKManager(this)*/
59
     private var mMyInstallReceiver: AppInstallReceiver? = null
58
     private var mMyInstallReceiver: AppInstallReceiver? = null
60
-    private var mySDReceiver: SDReceiver? = null
61
     private var dataList: ArrayList<AppInfo> = arrayListOf()
59
     private var dataList: ArrayList<AppInfo> = arrayListOf()
62
 
60
 
63
     override fun getBinding() = ActivityMainBinding.inflate(layoutInflater)
61
     override fun getBinding() = ActivityMainBinding.inflate(layoutInflater)
80
             UIEvent("2005").post()
78
             UIEvent("2005").post()
81
         }
79
         }
82
         registerAppInstallReceiver()
80
         registerAppInstallReceiver()
83
-        // registerSDReceiver()
84
         /*
81
         /*
85
          使用情况权限
82
          使用情况权限
86
          val permissionIntent = Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS)
83
          val permissionIntent = Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS)
127
         }
124
         }
128
         onBackPressedDispatcher.addCallback {
125
         onBackPressedDispatcher.addCallback {
129
             //屏蔽返回
126
             //屏蔽返回
127
+
130
         }
128
         }
131
     }
129
     }
132
 
130
 
138
         viewModel.uploadAppStrategy()
136
         viewModel.uploadAppStrategy()
139
         useStrategy()
137
         useStrategy()
140
         updatePadInfo()
138
         updatePadInfo()
139
+        updateMcApp()
140
+        getLocation()
141
         try {
141
         try {
142
             var s =
142
             var s =
143
                 "厂商" + CustomOSUtils.getSystemBrand() + ",型号" + CustomOSUtils.getSystemDevice() + ",系统版本" + CustomOSUtils.getSystemDisplay()
143
                 "厂商" + CustomOSUtils.getSystemBrand() + ",型号" + CustomOSUtils.getSystemDevice() + ",系统版本" + CustomOSUtils.getSystemDisplay()
147
         requestPermissionAndShotView()
147
         requestPermissionAndShotView()
148
     }
148
     }
149
 
149
 
150
+    private fun updateMcApp() {
151
+        //每天请求一次app更新接口
152
+        try {
153
+            var userBean = spUtils.getFromJson(Const.USERINFO, UserBean().javaClass) as UserBean
154
+            //获得pad信息提交时间,如果为同一天则不在上传,不然继续上传
155
+            val padTime = spUtils.getParam(Const.PADUPDATETIMEKEY, 0L) as Long
156
+            val instance = Calendar.getInstance()
157
+            val currentYear = instance.get(Calendar.YEAR)
158
+            val currentDay = instance.get(Calendar.DAY_OF_YEAR)
159
+            instance.timeInMillis = padTime
160
+            val year = instance.get(Calendar.YEAR)
161
+            val day = instance.get(Calendar.DAY_OF_YEAR)
162
+            if (!(currentYear == year && currentDay == day)) {
163
+                val updateBean = UpdateBean()
164
+                ManageApplication.getDeviceInfo()?.let {
165
+                    updateBean.sn = it
166
+                }
167
+                val packageInfo =
168
+                    packageManager.getPackageInfo(packageName, PackageManager.GET_META_DATA)
169
+                updateBean.cversion = packageInfo.versionName
170
+                updateBean.schoolid=userBean.schoolid
171
+                updateBean.userid=userBean.userid
172
+                updateBean.regionid=userBean.regionid
173
+                viewModel.updateMcApp(updateBean)
174
+            }
175
+        } catch (e: Exception) {
176
+
177
+        }
178
+    }
179
+
150
     @SuppressLint("CheckResult")
180
     @SuppressLint("CheckResult")
151
     private fun updatePadInfo() {
181
     private fun updatePadInfo() {
152
         try {
182
         try {
162
             val request = rxPermissions.request(Manifest.permission.READ_PHONE_STATE)
192
             val request = rxPermissions.request(Manifest.permission.READ_PHONE_STATE)
163
             //权限通过不通过都要执行
193
             //权限通过不通过都要执行
164
             request.subscribe({ granted: Boolean ->
194
             request.subscribe({ granted: Boolean ->
165
-                var iccid =""
166
-                if (granted){
167
-                     iccid = SystemUtil.getICCID(this)
195
+                var iccid = ""
196
+                if (granted) {
197
+                    iccid = SystemUtil.getICCID(this)
168
                 }
198
                 }
169
                 if (!(currentYear == year && currentDay == day)) {
199
                 if (!(currentYear == year && currentDay == day)) {
170
-                    viewModel.updatePadInfo(PadInfoUtils().getPadInfo(this,iccid))
200
+                    viewModel.updatePadInfo(PadInfoUtils().getPadInfo(this, iccid))
171
                 }
201
                 }
172
             }, {
202
             }, {
173
                 if (!(currentYear == year && currentDay == day)) {
203
                 if (!(currentYear == year && currentDay == day)) {
174
-                    viewModel.updatePadInfo(PadInfoUtils().getPadInfo(this,""))
204
+                    viewModel.updatePadInfo(PadInfoUtils().getPadInfo(this, ""))
175
                 }
205
                 }
176
             })
206
             })
177
         } catch (e: Exception) {
207
         } catch (e: Exception) {
179
         }
209
         }
180
     }
210
     }
181
 
211
 
212
+    @SuppressLint("CheckResult")
213
+    private fun getLocation() {
214
+        val rxPermissions = RxPermissions(this)
215
+        rxPermissions.request(
216
+            Manifest.permission.ACCESS_FINE_LOCATION,
217
+            Manifest.permission.ACCESS_COARSE_LOCATION
218
+        ).subscribe({
219
+            if (it) {
220
+                SystemUtil.getLocation(this)
221
+            } else {
222
+                LogShow("没有权限")
223
+            }
224
+        }, {
225
+            LogShow("没有权限" + it.message)
226
+        })
227
+    }
228
+
182
     private fun useStrategy() {
229
     private fun useStrategy() {
183
         //获得sputils中的数据设置状态,以及策略
230
         //获得sputils中的数据设置状态,以及策略
184
         try {
231
         try {
375
     }
422
     }
376
 
423
 
377
 
424
 
378
-    private fun registerSDReceiver() {
379
-        val intentFilter = IntentFilter();
380
-        intentFilter.addAction(Intent.ACTION_MEDIA_MOUNTED)
381
-        intentFilter.addAction(Intent.ACTION_MEDIA_EJECT)
382
-        intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED)
383
-        intentFilter.addDataScheme("file")
384
-        intentFilter.priority = 1000
385
-        mySDReceiver = SDReceiver()
386
-        registerReceiver(mySDReceiver, intentFilter);
387
-    }
388
-
389
-
390
     private fun showEditDialog() {
425
     private fun showEditDialog() {
391
         CustomDialog.build()
426
         CustomDialog.build()
392
             .setCustomView(object : OnBindView<CustomDialog>(R.layout.layout_edit_dialog) {
427
             .setCustomView(object : OnBindView<CustomDialog>(R.layout.layout_edit_dialog) {
435
         mMyInstallReceiver?.let {
470
         mMyInstallReceiver?.let {
436
             unregisterReceiver(it)
471
             unregisterReceiver(it)
437
         }
472
         }
438
-        mySDReceiver?.let {
439
-            unregisterReceiver(it)
440
-        }
441
         LogShow("MainActivity被销毁")
473
         LogShow("MainActivity被销毁")
442
     }
474
     }
443
 
475
 
462
     private fun startWorkManager() {
494
     private fun startWorkManager() {
463
         WorkManager.getInstance(this).cancelAllWork()
495
         WorkManager.getInstance(this).cancelAllWork()
464
         // 周期性任务时间最少15分钟 所以除以实际周期的时间  看需要加入几个任务
496
         // 周期性任务时间最少15分钟 所以除以实际周期的时间  看需要加入几个任务
465
-        val taskList = arrayListOf(5, 10)
466
-        for (taskNo in taskList) {
497
+        /*val taskList = arrayListOf(5, 10)*/
498
+        for (taskNo in 1..10) {
467
             val request = PeriodicWorkRequest
499
             val request = PeriodicWorkRequest
468
                 // 最少15分钟 PeriodicWorkRequest
500
                 // 最少15分钟 PeriodicWorkRequest
469
                 .Builder(TimingWorker::class.java, 15, TimeUnit.MINUTES)
501
                 .Builder(TimingWorker::class.java, 15, TimeUnit.MINUTES)

+ 18
- 7
app/src/main/java/com/xhly/manageapp/ui/main/viewmodel/MainViewModel.kt 查看文件

4
 import androidx.lifecycle.MutableLiveData
4
 import androidx.lifecycle.MutableLiveData
5
 import com.xhly.corelib.base.viewmodel.CommonBaseViewModel
5
 import com.xhly.corelib.base.viewmodel.CommonBaseViewModel
6
 import com.xhly.corelib.network.RetrofitService
6
 import com.xhly.corelib.network.RetrofitService
7
-import com.xhly.corelib.network.bean.ResponseData
8
 import com.xhly.manageapp.bean.AppModel
7
 import com.xhly.manageapp.bean.AppModel
9
 import com.xhly.manageapp.bean.ListAppBean
8
 import com.xhly.manageapp.bean.ListAppBean
9
+import com.xhly.manageapp.bean.UpdateBean
10
 import com.xhly.manageapp.bean.log.LogdOperateBean
10
 import com.xhly.manageapp.bean.log.LogdOperateBean
11
 import com.xhly.manageapp.bean.log.PadInfoBean
11
 import com.xhly.manageapp.bean.log.PadInfoBean
12
 import com.xhly.manageapp.bean.strategy.AppTimeManageBean
12
 import com.xhly.manageapp.bean.strategy.AppTimeManageBean
25
     val strategyData: LiveData<StrategyBean> = strategy
25
     val strategyData: LiveData<StrategyBean> = strategy
26
     private val appStrategy = MutableLiveData<ArrayList<AppTimeManageBean>>()
26
     private val appStrategy = MutableLiveData<ArrayList<AppTimeManageBean>>()
27
     val appStrategyData: LiveData<ArrayList<AppTimeManageBean>> = appStrategy
27
     val appStrategyData: LiveData<ArrayList<AppTimeManageBean>> = appStrategy
28
-    private val padInfo=MutableLiveData<Boolean>()
29
-    val padInfoData:LiveData<Boolean> =padInfo
28
+    private val padInfo = MutableLiveData<Boolean>()
29
+    val padInfoData: LiveData<Boolean> = padInfo
30
+    private val updateInfo = MutableLiveData<Boolean>()
31
+    val updateInfoData: LiveData<Boolean> = updateInfo
30
     fun getAppList() {
32
     fun getAppList() {
31
         launchUI {
33
         launchUI {
32
             val postListApp = appService.postListApp(ListAppBean())
34
             val postListApp = appService.postListApp(ListAppBean())
82
         }
84
         }
83
     }
85
     }
84
 
86
 
85
-    fun updatePadInfo(padInfoBean: PadInfoBean){
87
+    fun updatePadInfo(padInfoBean: PadInfoBean) {
86
         launchUI {
88
         launchUI {
87
-            var anyResponseData = logService.postPadDetailAdd(padInfoBean)
88
-            if (anyResponseData.code==0){
89
-                padInfo.value=true
89
+            val anyResponseData = logService.postPadDetailAdd(padInfoBean)
90
+            if (anyResponseData.code == 0) {
91
+                padInfo.value = true
92
+            }
93
+        }
94
+    }
95
+
96
+    fun updateMcApp(updateBean: UpdateBean) {
97
+        launchUI {
98
+            val postClientAdd = appService.postClientAdd(updateBean)
99
+            if (postClientAdd.code == 0) {
100
+                updateInfo.value = true
90
             }
101
             }
91
         }
102
         }
92
     }
103
     }

正在加载...
取消
保存