diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 99e23dd..f782953 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -62,6 +62,7 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 99e23dd..f782953 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -62,6 +62,7 @@
+
diff --git a/app/src/main/java/com/casic/detector/view/MainActivity.kt b/app/src/main/java/com/casic/detector/view/MainActivity.kt
index 6ddca27..fe3129a 100644
--- a/app/src/main/java/com/casic/detector/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/detector/view/MainActivity.kt
@@ -1,20 +1,16 @@
package com.casic.detector.view
-import android.app.ProgressDialog
import android.content.Context
import android.content.Intent
import android.graphics.BitmapFactory
import android.graphics.Color
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
-import android.net.Uri
-import android.os.Build
import android.os.Bundle
import android.os.PowerManager
import android.provider.Settings
import android.util.Log
import android.view.KeyEvent
-import androidx.core.content.FileProvider
import androidx.lifecycle.ViewModelProvider
import com.amap.api.location.AMapLocation
import com.amap.api.maps.AMap
@@ -22,9 +18,9 @@
import com.amap.api.maps.CameraUpdateFactory
import com.amap.api.maps.CoordinateConverter
import com.amap.api.maps.model.*
-import com.casic.detector.BuildConfig
import com.casic.detector.R
import com.casic.detector.bean.LabelBean
+import com.casic.detector.bean.TaskBean
import com.casic.detector.callback.ILocationListener
import com.casic.detector.cluster.ClusterItem
import com.casic.detector.cluster.ClusterOverlay
@@ -35,7 +31,6 @@
import com.casic.detector.model.TaskModel
import com.casic.detector.utils.*
import com.casic.detector.vm.TaskViewModel
-import com.casic.detector.vm.VersionViewModel
import com.casic.detector.widgets.QueryMarkerDialog
import com.casic.detector.widgets.SamplePopupWindow
import com.google.gson.Gson
@@ -64,10 +59,8 @@
private val context: Context = this@MainActivity
private var clickTime: Long = 0
private lateinit var aMap: AMap
- private lateinit var versionViewModel: VersionViewModel
private lateinit var taskViewModel: TaskViewModel
private val samplePopupWindow by lazy { SamplePopupWindow(this) }
- private val progressDialog by lazy { ProgressDialog(this) }
private var labelBeans = ArrayList()
private var clusterOverlay: ClusterOverlay? = null
private val backDrawables = HashMap()
@@ -76,6 +69,7 @@
private var longitude: Double = 0.0
private val gson by lazy { Gson() }
private lateinit var wakeLock: PowerManager.WakeLock
+ private lateinit var taskBean: TaskBean
override fun initLayoutView(): Int = R.layout.activity_main
@@ -97,36 +91,6 @@
samplePopupWindow.setPopupMenuItem(LocaleConstant.POPUP_TITLES)
samplePopupWindow.setBackgroundDrawable(null)
- //初始化下载对话框
- progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL)
- progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress))
- progressDialog.setCanceledOnTouchOutside(false)
- progressDialog.setCancelable(false)
-
- versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java]
- versionViewModel.versionResult.observe(this) {
- if (it.version.toInt() > BuildConfig.VERSION_CODE) {
- AlertControlDialog.Builder()
- .setContext(this)
- .setTitle("提示")
- .setMessage("有新版本,是否更新?")
- .setNegativeButton("稍后再说")
- .setPositiveButton("立即下载")
- .setOnDialogButtonClickListener(object :
- AlertControlDialog.OnDialogButtonClickListener {
- override fun onConfirmClick() {
- downloadApk(it.path)
- }
-
- override fun onCancelClick() {
-
- }
- }).build().show()
- } else {
- "已是最新版本,无需更新".show(this)
- }
- }
-
taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
taskViewModel.markerFileResult.observe(this) {
if (it.isSuccess) {
@@ -192,7 +156,7 @@
when (position) {
0 -> updateLabels()
1 -> downloadTask()
- 2 -> versionViewModel.getApplicationVersion()
+ 2 -> navigatePageTo()
3 -> uploadEvent()
4 -> uploadLabel()
}
@@ -271,7 +235,7 @@
.setActionItemTitle(arrayList)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
- val taskBean = task[position]
+ taskBean = task[position]
SaveKeyValues.putValue(LocaleConstant.TASK_ID, taskBean.taskId)
AlertControlDialog.Builder()
.setContext(context)
@@ -321,18 +285,12 @@
}
override fun observeRequestState() {
- versionViewModel.loadState.observe(this) {
- when (it) {
- LoadState.Loading -> LoadingDialogHub.show(this, "检查版本中,请稍后")
- else -> LoadingDialogHub.dismiss()
- }
- }
-
taskViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "提交工单中,请稍后")
else -> LoadingDialogHub.dismiss()
}
+ detectRedrawGraphic(taskBean.taskId)
}
}
@@ -644,8 +602,7 @@
LoadingDialogHub.show(this, "标识器补全中,请稍后...")
labelBeans.forEach { labelBean ->
val imagePaths = gson.fromJson>(
- labelBean.imagePath,
- object : TypeToken>() {}.type
+ labelBean.imagePath, object : TypeToken>() {}.type
)
taskViewModel.installLabel(
@@ -684,58 +641,6 @@
}
}
- private fun downloadApk(url: String?) {
- progressDialog.setMessage("下载新版本中...")
- progressDialog.show()
- if (url.toString().isBlank()) {
- "抱歉,版本下载失败".show(this)
- return
- }
- /**
- * http://139.198.18.188:8090/ems/apk/EMSCJTX202011052026(V3.14.0).apk
- * */
- val downloadPath = url!!.appendDownloadUrl(FileType.APK)
- Log.d(kTag, "downloadApk => $downloadPath")
- //开始下载
- downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener {
- override fun onDownloadStart(totalBytes: Long) {
- progressDialog.max = totalBytes.toInt()
- }
-
- override fun onProgressChanged(currentBytes: Long) {
- progressDialog.progress = currentBytes.toInt()
- }
-
- override fun onDownloadEnd(file: File?) {
- progressDialog.dismiss()
- progressDialog.progress = 0
- //安装APK
- installApk(file)
- }
- })
- }
-
- private fun installApk(apkPackage: File?) {
- if (apkPackage == null) {
- "安装文件异常,无法安装".show(this)
- return
- }
- val intent = Intent(Intent.ACTION_VIEW)
- val data: Uri
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
- data = FileProvider.getUriForFile(this, LocaleConstant.APP_AUTHORITY, apkPackage)
- intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
- } else {
- data = Uri.fromFile(apkPackage)
- }
- /**
- * android 10
- * content://com.casic.app.smartwell.fileprovider/smartWell/Download/1.0.1.apk
- * */
- intent.setDataAndType(data, "application/vnd.android.package-archive")
- startActivity(intent)
- }
-
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
return if (keyCode == KeyEvent.KEYCODE_BACK) {
if (System.currentTimeMillis() - clickTime > 2000) {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 99e23dd..f782953 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -62,6 +62,7 @@
+
diff --git a/app/src/main/java/com/casic/detector/view/MainActivity.kt b/app/src/main/java/com/casic/detector/view/MainActivity.kt
index 6ddca27..fe3129a 100644
--- a/app/src/main/java/com/casic/detector/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/detector/view/MainActivity.kt
@@ -1,20 +1,16 @@
package com.casic.detector.view
-import android.app.ProgressDialog
import android.content.Context
import android.content.Intent
import android.graphics.BitmapFactory
import android.graphics.Color
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
-import android.net.Uri
-import android.os.Build
import android.os.Bundle
import android.os.PowerManager
import android.provider.Settings
import android.util.Log
import android.view.KeyEvent
-import androidx.core.content.FileProvider
import androidx.lifecycle.ViewModelProvider
import com.amap.api.location.AMapLocation
import com.amap.api.maps.AMap
@@ -22,9 +18,9 @@
import com.amap.api.maps.CameraUpdateFactory
import com.amap.api.maps.CoordinateConverter
import com.amap.api.maps.model.*
-import com.casic.detector.BuildConfig
import com.casic.detector.R
import com.casic.detector.bean.LabelBean
+import com.casic.detector.bean.TaskBean
import com.casic.detector.callback.ILocationListener
import com.casic.detector.cluster.ClusterItem
import com.casic.detector.cluster.ClusterOverlay
@@ -35,7 +31,6 @@
import com.casic.detector.model.TaskModel
import com.casic.detector.utils.*
import com.casic.detector.vm.TaskViewModel
-import com.casic.detector.vm.VersionViewModel
import com.casic.detector.widgets.QueryMarkerDialog
import com.casic.detector.widgets.SamplePopupWindow
import com.google.gson.Gson
@@ -64,10 +59,8 @@
private val context: Context = this@MainActivity
private var clickTime: Long = 0
private lateinit var aMap: AMap
- private lateinit var versionViewModel: VersionViewModel
private lateinit var taskViewModel: TaskViewModel
private val samplePopupWindow by lazy { SamplePopupWindow(this) }
- private val progressDialog by lazy { ProgressDialog(this) }
private var labelBeans = ArrayList()
private var clusterOverlay: ClusterOverlay? = null
private val backDrawables = HashMap()
@@ -76,6 +69,7 @@
private var longitude: Double = 0.0
private val gson by lazy { Gson() }
private lateinit var wakeLock: PowerManager.WakeLock
+ private lateinit var taskBean: TaskBean
override fun initLayoutView(): Int = R.layout.activity_main
@@ -97,36 +91,6 @@
samplePopupWindow.setPopupMenuItem(LocaleConstant.POPUP_TITLES)
samplePopupWindow.setBackgroundDrawable(null)
- //初始化下载对话框
- progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL)
- progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress))
- progressDialog.setCanceledOnTouchOutside(false)
- progressDialog.setCancelable(false)
-
- versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java]
- versionViewModel.versionResult.observe(this) {
- if (it.version.toInt() > BuildConfig.VERSION_CODE) {
- AlertControlDialog.Builder()
- .setContext(this)
- .setTitle("提示")
- .setMessage("有新版本,是否更新?")
- .setNegativeButton("稍后再说")
- .setPositiveButton("立即下载")
- .setOnDialogButtonClickListener(object :
- AlertControlDialog.OnDialogButtonClickListener {
- override fun onConfirmClick() {
- downloadApk(it.path)
- }
-
- override fun onCancelClick() {
-
- }
- }).build().show()
- } else {
- "已是最新版本,无需更新".show(this)
- }
- }
-
taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
taskViewModel.markerFileResult.observe(this) {
if (it.isSuccess) {
@@ -192,7 +156,7 @@
when (position) {
0 -> updateLabels()
1 -> downloadTask()
- 2 -> versionViewModel.getApplicationVersion()
+ 2 -> navigatePageTo()
3 -> uploadEvent()
4 -> uploadLabel()
}
@@ -271,7 +235,7 @@
.setActionItemTitle(arrayList)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
- val taskBean = task[position]
+ taskBean = task[position]
SaveKeyValues.putValue(LocaleConstant.TASK_ID, taskBean.taskId)
AlertControlDialog.Builder()
.setContext(context)
@@ -321,18 +285,12 @@
}
override fun observeRequestState() {
- versionViewModel.loadState.observe(this) {
- when (it) {
- LoadState.Loading -> LoadingDialogHub.show(this, "检查版本中,请稍后")
- else -> LoadingDialogHub.dismiss()
- }
- }
-
taskViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "提交工单中,请稍后")
else -> LoadingDialogHub.dismiss()
}
+ detectRedrawGraphic(taskBean.taskId)
}
}
@@ -644,8 +602,7 @@
LoadingDialogHub.show(this, "标识器补全中,请稍后...")
labelBeans.forEach { labelBean ->
val imagePaths = gson.fromJson>(
- labelBean.imagePath,
- object : TypeToken>() {}.type
+ labelBean.imagePath, object : TypeToken>() {}.type
)
taskViewModel.installLabel(
@@ -684,58 +641,6 @@
}
}
- private fun downloadApk(url: String?) {
- progressDialog.setMessage("下载新版本中...")
- progressDialog.show()
- if (url.toString().isBlank()) {
- "抱歉,版本下载失败".show(this)
- return
- }
- /**
- * http://139.198.18.188:8090/ems/apk/EMSCJTX202011052026(V3.14.0).apk
- * */
- val downloadPath = url!!.appendDownloadUrl(FileType.APK)
- Log.d(kTag, "downloadApk => $downloadPath")
- //开始下载
- downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener {
- override fun onDownloadStart(totalBytes: Long) {
- progressDialog.max = totalBytes.toInt()
- }
-
- override fun onProgressChanged(currentBytes: Long) {
- progressDialog.progress = currentBytes.toInt()
- }
-
- override fun onDownloadEnd(file: File?) {
- progressDialog.dismiss()
- progressDialog.progress = 0
- //安装APK
- installApk(file)
- }
- })
- }
-
- private fun installApk(apkPackage: File?) {
- if (apkPackage == null) {
- "安装文件异常,无法安装".show(this)
- return
- }
- val intent = Intent(Intent.ACTION_VIEW)
- val data: Uri
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
- data = FileProvider.getUriForFile(this, LocaleConstant.APP_AUTHORITY, apkPackage)
- intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
- } else {
- data = Uri.fromFile(apkPackage)
- }
- /**
- * android 10
- * content://com.casic.app.smartwell.fileprovider/smartWell/Download/1.0.1.apk
- * */
- intent.setDataAndType(data, "application/vnd.android.package-archive")
- startActivity(intent)
- }
-
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
return if (keyCode == KeyEvent.KEYCODE_BACK) {
if (System.currentTimeMillis() - clickTime > 2000) {
diff --git a/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt
new file mode 100644
index 0000000..10674da
--- /dev/null
+++ b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt
@@ -0,0 +1,148 @@
+package com.casic.detector.view
+
+import android.app.ProgressDialog
+import android.content.Intent
+import android.net.Uri
+import android.os.Build
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.core.content.FileProvider
+import androidx.lifecycle.ViewModelProvider
+import com.casic.detector.BuildConfig
+import com.casic.detector.R
+import com.casic.detector.extensions.appendDownloadUrl
+import com.casic.detector.extensions.initLayoutImmersionBar
+import com.casic.detector.utils.FileType
+import com.casic.detector.utils.LoadingDialogHub
+import com.casic.detector.utils.LocaleConstant
+import com.casic.detector.vm.VersionViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.callback.OnDownloadListener
+import com.pengxh.kt.lite.extensions.createDownloadFileDir
+import com.pengxh.kt.lite.extensions.downloadFile
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.vm.LoadState
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_version_control.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import java.io.File
+
+class VersionControlActivity : KotlinBaseActivity() {
+
+ private val kTag = "VersionControlActivity"
+ private val progressDialog by lazy { ProgressDialog(this) }
+ private lateinit var versionViewModel: VersionViewModel
+
+ override fun initData(savedInstanceState: Bundle?) {
+ versionView.text = "Version ${BuildConfig.VERSION_NAME}"
+
+ //初始化下载对话框
+ progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL)
+ progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress))
+ progressDialog.setCanceledOnTouchOutside(false)
+ progressDialog.setCancelable(false)
+
+ versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java]
+ versionViewModel.versionResult.observe(this) {
+ if (it.version.toInt() > BuildConfig.VERSION_CODE) {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("提示")
+ .setMessage("有新版本,是否更新?")
+ .setNegativeButton("稍后再说")
+ .setPositiveButton("立即下载")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ downloadApk(it.path)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ } else {
+ "已是最新版本,无需更新".show(this)
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ updateLayout.setOnClickListener {
+ versionViewModel.getApplicationVersion()
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_version_control
+
+ override fun observeRequestState() {
+ versionViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "检查版本中,请稍后")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.visibility = View.GONE
+ }
+
+ private fun downloadApk(url: String?) {
+ progressDialog.setMessage("下载新版本中...")
+ progressDialog.show()
+ if (url.toString().isBlank()) {
+ "抱歉,版本下载失败".show(this)
+ return
+ }
+ /**
+ * http://139.198.18.188:8090/ems/apk/EMSCJTX202011052026(V3.14.0).apk
+ * */
+ val downloadPath = url!!.appendDownloadUrl(FileType.APK)
+ Log.d(kTag, "downloadApk => $downloadPath")
+ //开始下载
+ downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener {
+ override fun onDownloadStart(totalBytes: Long) {
+ progressDialog.max = totalBytes.toInt()
+ }
+
+ override fun onProgressChanged(currentBytes: Long) {
+ progressDialog.progress = currentBytes.toInt()
+ }
+
+ override fun onDownloadEnd(file: File?) {
+ progressDialog.dismiss()
+ progressDialog.progress = 0
+ //安装APK
+ installApk(file)
+ }
+ })
+ }
+
+ private fun installApk(apkPackage: File?) {
+ if (apkPackage == null) {
+ "安装文件异常,无法安装".show(this)
+ return
+ }
+ val intent = Intent(Intent.ACTION_VIEW)
+ val data: Uri
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
+ data = FileProvider.getUriForFile(this, LocaleConstant.APP_AUTHORITY, apkPackage)
+ intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
+ } else {
+ data = Uri.fromFile(apkPackage)
+ }
+ /**
+ * android 10
+ * content://com.casic.app.smartwell.fileprovider/smartWell/Download/1.0.1.apk
+ * */
+ intent.setDataAndType(data, "application/vnd.android.package-archive")
+ startActivity(intent)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 99e23dd..f782953 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -62,6 +62,7 @@
+
diff --git a/app/src/main/java/com/casic/detector/view/MainActivity.kt b/app/src/main/java/com/casic/detector/view/MainActivity.kt
index 6ddca27..fe3129a 100644
--- a/app/src/main/java/com/casic/detector/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/detector/view/MainActivity.kt
@@ -1,20 +1,16 @@
package com.casic.detector.view
-import android.app.ProgressDialog
import android.content.Context
import android.content.Intent
import android.graphics.BitmapFactory
import android.graphics.Color
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
-import android.net.Uri
-import android.os.Build
import android.os.Bundle
import android.os.PowerManager
import android.provider.Settings
import android.util.Log
import android.view.KeyEvent
-import androidx.core.content.FileProvider
import androidx.lifecycle.ViewModelProvider
import com.amap.api.location.AMapLocation
import com.amap.api.maps.AMap
@@ -22,9 +18,9 @@
import com.amap.api.maps.CameraUpdateFactory
import com.amap.api.maps.CoordinateConverter
import com.amap.api.maps.model.*
-import com.casic.detector.BuildConfig
import com.casic.detector.R
import com.casic.detector.bean.LabelBean
+import com.casic.detector.bean.TaskBean
import com.casic.detector.callback.ILocationListener
import com.casic.detector.cluster.ClusterItem
import com.casic.detector.cluster.ClusterOverlay
@@ -35,7 +31,6 @@
import com.casic.detector.model.TaskModel
import com.casic.detector.utils.*
import com.casic.detector.vm.TaskViewModel
-import com.casic.detector.vm.VersionViewModel
import com.casic.detector.widgets.QueryMarkerDialog
import com.casic.detector.widgets.SamplePopupWindow
import com.google.gson.Gson
@@ -64,10 +59,8 @@
private val context: Context = this@MainActivity
private var clickTime: Long = 0
private lateinit var aMap: AMap
- private lateinit var versionViewModel: VersionViewModel
private lateinit var taskViewModel: TaskViewModel
private val samplePopupWindow by lazy { SamplePopupWindow(this) }
- private val progressDialog by lazy { ProgressDialog(this) }
private var labelBeans = ArrayList()
private var clusterOverlay: ClusterOverlay? = null
private val backDrawables = HashMap()
@@ -76,6 +69,7 @@
private var longitude: Double = 0.0
private val gson by lazy { Gson() }
private lateinit var wakeLock: PowerManager.WakeLock
+ private lateinit var taskBean: TaskBean
override fun initLayoutView(): Int = R.layout.activity_main
@@ -97,36 +91,6 @@
samplePopupWindow.setPopupMenuItem(LocaleConstant.POPUP_TITLES)
samplePopupWindow.setBackgroundDrawable(null)
- //初始化下载对话框
- progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL)
- progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress))
- progressDialog.setCanceledOnTouchOutside(false)
- progressDialog.setCancelable(false)
-
- versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java]
- versionViewModel.versionResult.observe(this) {
- if (it.version.toInt() > BuildConfig.VERSION_CODE) {
- AlertControlDialog.Builder()
- .setContext(this)
- .setTitle("提示")
- .setMessage("有新版本,是否更新?")
- .setNegativeButton("稍后再说")
- .setPositiveButton("立即下载")
- .setOnDialogButtonClickListener(object :
- AlertControlDialog.OnDialogButtonClickListener {
- override fun onConfirmClick() {
- downloadApk(it.path)
- }
-
- override fun onCancelClick() {
-
- }
- }).build().show()
- } else {
- "已是最新版本,无需更新".show(this)
- }
- }
-
taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
taskViewModel.markerFileResult.observe(this) {
if (it.isSuccess) {
@@ -192,7 +156,7 @@
when (position) {
0 -> updateLabels()
1 -> downloadTask()
- 2 -> versionViewModel.getApplicationVersion()
+ 2 -> navigatePageTo()
3 -> uploadEvent()
4 -> uploadLabel()
}
@@ -271,7 +235,7 @@
.setActionItemTitle(arrayList)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
- val taskBean = task[position]
+ taskBean = task[position]
SaveKeyValues.putValue(LocaleConstant.TASK_ID, taskBean.taskId)
AlertControlDialog.Builder()
.setContext(context)
@@ -321,18 +285,12 @@
}
override fun observeRequestState() {
- versionViewModel.loadState.observe(this) {
- when (it) {
- LoadState.Loading -> LoadingDialogHub.show(this, "检查版本中,请稍后")
- else -> LoadingDialogHub.dismiss()
- }
- }
-
taskViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "提交工单中,请稍后")
else -> LoadingDialogHub.dismiss()
}
+ detectRedrawGraphic(taskBean.taskId)
}
}
@@ -644,8 +602,7 @@
LoadingDialogHub.show(this, "标识器补全中,请稍后...")
labelBeans.forEach { labelBean ->
val imagePaths = gson.fromJson>(
- labelBean.imagePath,
- object : TypeToken>() {}.type
+ labelBean.imagePath, object : TypeToken>() {}.type
)
taskViewModel.installLabel(
@@ -684,58 +641,6 @@
}
}
- private fun downloadApk(url: String?) {
- progressDialog.setMessage("下载新版本中...")
- progressDialog.show()
- if (url.toString().isBlank()) {
- "抱歉,版本下载失败".show(this)
- return
- }
- /**
- * http://139.198.18.188:8090/ems/apk/EMSCJTX202011052026(V3.14.0).apk
- * */
- val downloadPath = url!!.appendDownloadUrl(FileType.APK)
- Log.d(kTag, "downloadApk => $downloadPath")
- //开始下载
- downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener {
- override fun onDownloadStart(totalBytes: Long) {
- progressDialog.max = totalBytes.toInt()
- }
-
- override fun onProgressChanged(currentBytes: Long) {
- progressDialog.progress = currentBytes.toInt()
- }
-
- override fun onDownloadEnd(file: File?) {
- progressDialog.dismiss()
- progressDialog.progress = 0
- //安装APK
- installApk(file)
- }
- })
- }
-
- private fun installApk(apkPackage: File?) {
- if (apkPackage == null) {
- "安装文件异常,无法安装".show(this)
- return
- }
- val intent = Intent(Intent.ACTION_VIEW)
- val data: Uri
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
- data = FileProvider.getUriForFile(this, LocaleConstant.APP_AUTHORITY, apkPackage)
- intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
- } else {
- data = Uri.fromFile(apkPackage)
- }
- /**
- * android 10
- * content://com.casic.app.smartwell.fileprovider/smartWell/Download/1.0.1.apk
- * */
- intent.setDataAndType(data, "application/vnd.android.package-archive")
- startActivity(intent)
- }
-
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
return if (keyCode == KeyEvent.KEYCODE_BACK) {
if (System.currentTimeMillis() - clickTime > 2000) {
diff --git a/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt
new file mode 100644
index 0000000..10674da
--- /dev/null
+++ b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt
@@ -0,0 +1,148 @@
+package com.casic.detector.view
+
+import android.app.ProgressDialog
+import android.content.Intent
+import android.net.Uri
+import android.os.Build
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.core.content.FileProvider
+import androidx.lifecycle.ViewModelProvider
+import com.casic.detector.BuildConfig
+import com.casic.detector.R
+import com.casic.detector.extensions.appendDownloadUrl
+import com.casic.detector.extensions.initLayoutImmersionBar
+import com.casic.detector.utils.FileType
+import com.casic.detector.utils.LoadingDialogHub
+import com.casic.detector.utils.LocaleConstant
+import com.casic.detector.vm.VersionViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.callback.OnDownloadListener
+import com.pengxh.kt.lite.extensions.createDownloadFileDir
+import com.pengxh.kt.lite.extensions.downloadFile
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.vm.LoadState
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_version_control.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import java.io.File
+
+class VersionControlActivity : KotlinBaseActivity() {
+
+ private val kTag = "VersionControlActivity"
+ private val progressDialog by lazy { ProgressDialog(this) }
+ private lateinit var versionViewModel: VersionViewModel
+
+ override fun initData(savedInstanceState: Bundle?) {
+ versionView.text = "Version ${BuildConfig.VERSION_NAME}"
+
+ //初始化下载对话框
+ progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL)
+ progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress))
+ progressDialog.setCanceledOnTouchOutside(false)
+ progressDialog.setCancelable(false)
+
+ versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java]
+ versionViewModel.versionResult.observe(this) {
+ if (it.version.toInt() > BuildConfig.VERSION_CODE) {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("提示")
+ .setMessage("有新版本,是否更新?")
+ .setNegativeButton("稍后再说")
+ .setPositiveButton("立即下载")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ downloadApk(it.path)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ } else {
+ "已是最新版本,无需更新".show(this)
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ updateLayout.setOnClickListener {
+ versionViewModel.getApplicationVersion()
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_version_control
+
+ override fun observeRequestState() {
+ versionViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "检查版本中,请稍后")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.visibility = View.GONE
+ }
+
+ private fun downloadApk(url: String?) {
+ progressDialog.setMessage("下载新版本中...")
+ progressDialog.show()
+ if (url.toString().isBlank()) {
+ "抱歉,版本下载失败".show(this)
+ return
+ }
+ /**
+ * http://139.198.18.188:8090/ems/apk/EMSCJTX202011052026(V3.14.0).apk
+ * */
+ val downloadPath = url!!.appendDownloadUrl(FileType.APK)
+ Log.d(kTag, "downloadApk => $downloadPath")
+ //开始下载
+ downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener {
+ override fun onDownloadStart(totalBytes: Long) {
+ progressDialog.max = totalBytes.toInt()
+ }
+
+ override fun onProgressChanged(currentBytes: Long) {
+ progressDialog.progress = currentBytes.toInt()
+ }
+
+ override fun onDownloadEnd(file: File?) {
+ progressDialog.dismiss()
+ progressDialog.progress = 0
+ //安装APK
+ installApk(file)
+ }
+ })
+ }
+
+ private fun installApk(apkPackage: File?) {
+ if (apkPackage == null) {
+ "安装文件异常,无法安装".show(this)
+ return
+ }
+ val intent = Intent(Intent.ACTION_VIEW)
+ val data: Uri
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
+ data = FileProvider.getUriForFile(this, LocaleConstant.APP_AUTHORITY, apkPackage)
+ intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
+ } else {
+ data = Uri.fromFile(apkPackage)
+ }
+ /**
+ * android 10
+ * content://com.casic.app.smartwell.fileprovider/smartWell/Download/1.0.1.apk
+ * */
+ intent.setDataAndType(data, "application/vnd.android.package-archive")
+ startActivity(intent)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_version_control.xml b/app/src/main/res/layout/activity_version_control.xml
new file mode 100644
index 0000000..95e5da6
--- /dev/null
+++ b/app/src/main/res/layout/activity_version_control.xml
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 99e23dd..f782953 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -62,6 +62,7 @@
+
diff --git a/app/src/main/java/com/casic/detector/view/MainActivity.kt b/app/src/main/java/com/casic/detector/view/MainActivity.kt
index 6ddca27..fe3129a 100644
--- a/app/src/main/java/com/casic/detector/view/MainActivity.kt
+++ b/app/src/main/java/com/casic/detector/view/MainActivity.kt
@@ -1,20 +1,16 @@
package com.casic.detector.view
-import android.app.ProgressDialog
import android.content.Context
import android.content.Intent
import android.graphics.BitmapFactory
import android.graphics.Color
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.Drawable
-import android.net.Uri
-import android.os.Build
import android.os.Bundle
import android.os.PowerManager
import android.provider.Settings
import android.util.Log
import android.view.KeyEvent
-import androidx.core.content.FileProvider
import androidx.lifecycle.ViewModelProvider
import com.amap.api.location.AMapLocation
import com.amap.api.maps.AMap
@@ -22,9 +18,9 @@
import com.amap.api.maps.CameraUpdateFactory
import com.amap.api.maps.CoordinateConverter
import com.amap.api.maps.model.*
-import com.casic.detector.BuildConfig
import com.casic.detector.R
import com.casic.detector.bean.LabelBean
+import com.casic.detector.bean.TaskBean
import com.casic.detector.callback.ILocationListener
import com.casic.detector.cluster.ClusterItem
import com.casic.detector.cluster.ClusterOverlay
@@ -35,7 +31,6 @@
import com.casic.detector.model.TaskModel
import com.casic.detector.utils.*
import com.casic.detector.vm.TaskViewModel
-import com.casic.detector.vm.VersionViewModel
import com.casic.detector.widgets.QueryMarkerDialog
import com.casic.detector.widgets.SamplePopupWindow
import com.google.gson.Gson
@@ -64,10 +59,8 @@
private val context: Context = this@MainActivity
private var clickTime: Long = 0
private lateinit var aMap: AMap
- private lateinit var versionViewModel: VersionViewModel
private lateinit var taskViewModel: TaskViewModel
private val samplePopupWindow by lazy { SamplePopupWindow(this) }
- private val progressDialog by lazy { ProgressDialog(this) }
private var labelBeans = ArrayList()
private var clusterOverlay: ClusterOverlay? = null
private val backDrawables = HashMap()
@@ -76,6 +69,7 @@
private var longitude: Double = 0.0
private val gson by lazy { Gson() }
private lateinit var wakeLock: PowerManager.WakeLock
+ private lateinit var taskBean: TaskBean
override fun initLayoutView(): Int = R.layout.activity_main
@@ -97,36 +91,6 @@
samplePopupWindow.setPopupMenuItem(LocaleConstant.POPUP_TITLES)
samplePopupWindow.setBackgroundDrawable(null)
- //初始化下载对话框
- progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL)
- progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress))
- progressDialog.setCanceledOnTouchOutside(false)
- progressDialog.setCancelable(false)
-
- versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java]
- versionViewModel.versionResult.observe(this) {
- if (it.version.toInt() > BuildConfig.VERSION_CODE) {
- AlertControlDialog.Builder()
- .setContext(this)
- .setTitle("提示")
- .setMessage("有新版本,是否更新?")
- .setNegativeButton("稍后再说")
- .setPositiveButton("立即下载")
- .setOnDialogButtonClickListener(object :
- AlertControlDialog.OnDialogButtonClickListener {
- override fun onConfirmClick() {
- downloadApk(it.path)
- }
-
- override fun onCancelClick() {
-
- }
- }).build().show()
- } else {
- "已是最新版本,无需更新".show(this)
- }
- }
-
taskViewModel = ViewModelProvider(this)[TaskViewModel::class.java]
taskViewModel.markerFileResult.observe(this) {
if (it.isSuccess) {
@@ -192,7 +156,7 @@
when (position) {
0 -> updateLabels()
1 -> downloadTask()
- 2 -> versionViewModel.getApplicationVersion()
+ 2 -> navigatePageTo()
3 -> uploadEvent()
4 -> uploadLabel()
}
@@ -271,7 +235,7 @@
.setActionItemTitle(arrayList)
.setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener {
override fun onActionItemClick(position: Int) {
- val taskBean = task[position]
+ taskBean = task[position]
SaveKeyValues.putValue(LocaleConstant.TASK_ID, taskBean.taskId)
AlertControlDialog.Builder()
.setContext(context)
@@ -321,18 +285,12 @@
}
override fun observeRequestState() {
- versionViewModel.loadState.observe(this) {
- when (it) {
- LoadState.Loading -> LoadingDialogHub.show(this, "检查版本中,请稍后")
- else -> LoadingDialogHub.dismiss()
- }
- }
-
taskViewModel.loadState.observe(this) {
when (it) {
LoadState.Loading -> LoadingDialogHub.show(this, "提交工单中,请稍后")
else -> LoadingDialogHub.dismiss()
}
+ detectRedrawGraphic(taskBean.taskId)
}
}
@@ -644,8 +602,7 @@
LoadingDialogHub.show(this, "标识器补全中,请稍后...")
labelBeans.forEach { labelBean ->
val imagePaths = gson.fromJson>(
- labelBean.imagePath,
- object : TypeToken>() {}.type
+ labelBean.imagePath, object : TypeToken>() {}.type
)
taskViewModel.installLabel(
@@ -684,58 +641,6 @@
}
}
- private fun downloadApk(url: String?) {
- progressDialog.setMessage("下载新版本中...")
- progressDialog.show()
- if (url.toString().isBlank()) {
- "抱歉,版本下载失败".show(this)
- return
- }
- /**
- * http://139.198.18.188:8090/ems/apk/EMSCJTX202011052026(V3.14.0).apk
- * */
- val downloadPath = url!!.appendDownloadUrl(FileType.APK)
- Log.d(kTag, "downloadApk => $downloadPath")
- //开始下载
- downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener {
- override fun onDownloadStart(totalBytes: Long) {
- progressDialog.max = totalBytes.toInt()
- }
-
- override fun onProgressChanged(currentBytes: Long) {
- progressDialog.progress = currentBytes.toInt()
- }
-
- override fun onDownloadEnd(file: File?) {
- progressDialog.dismiss()
- progressDialog.progress = 0
- //安装APK
- installApk(file)
- }
- })
- }
-
- private fun installApk(apkPackage: File?) {
- if (apkPackage == null) {
- "安装文件异常,无法安装".show(this)
- return
- }
- val intent = Intent(Intent.ACTION_VIEW)
- val data: Uri
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
- data = FileProvider.getUriForFile(this, LocaleConstant.APP_AUTHORITY, apkPackage)
- intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
- } else {
- data = Uri.fromFile(apkPackage)
- }
- /**
- * android 10
- * content://com.casic.app.smartwell.fileprovider/smartWell/Download/1.0.1.apk
- * */
- intent.setDataAndType(data, "application/vnd.android.package-archive")
- startActivity(intent)
- }
-
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
return if (keyCode == KeyEvent.KEYCODE_BACK) {
if (System.currentTimeMillis() - clickTime > 2000) {
diff --git a/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt
new file mode 100644
index 0000000..10674da
--- /dev/null
+++ b/app/src/main/java/com/casic/detector/view/VersionControlActivity.kt
@@ -0,0 +1,148 @@
+package com.casic.detector.view
+
+import android.app.ProgressDialog
+import android.content.Intent
+import android.net.Uri
+import android.os.Build
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import androidx.core.content.FileProvider
+import androidx.lifecycle.ViewModelProvider
+import com.casic.detector.BuildConfig
+import com.casic.detector.R
+import com.casic.detector.extensions.appendDownloadUrl
+import com.casic.detector.extensions.initLayoutImmersionBar
+import com.casic.detector.utils.FileType
+import com.casic.detector.utils.LoadingDialogHub
+import com.casic.detector.utils.LocaleConstant
+import com.casic.detector.vm.VersionViewModel
+import com.gyf.immersionbar.ImmersionBar
+import com.pengxh.kt.lite.base.KotlinBaseActivity
+import com.pengxh.kt.lite.callback.OnDownloadListener
+import com.pengxh.kt.lite.extensions.createDownloadFileDir
+import com.pengxh.kt.lite.extensions.downloadFile
+import com.pengxh.kt.lite.extensions.show
+import com.pengxh.kt.lite.vm.LoadState
+import com.pengxh.kt.lite.widget.dialog.AlertControlDialog
+import kotlinx.android.synthetic.main.activity_version_control.*
+import kotlinx.android.synthetic.main.include_base_title.*
+import java.io.File
+
+class VersionControlActivity : KotlinBaseActivity() {
+
+ private val kTag = "VersionControlActivity"
+ private val progressDialog by lazy { ProgressDialog(this) }
+ private lateinit var versionViewModel: VersionViewModel
+
+ override fun initData(savedInstanceState: Bundle?) {
+ versionView.text = "Version ${BuildConfig.VERSION_NAME}"
+
+ //初始化下载对话框
+ progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL)
+ progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress))
+ progressDialog.setCanceledOnTouchOutside(false)
+ progressDialog.setCancelable(false)
+
+ versionViewModel = ViewModelProvider(this)[VersionViewModel::class.java]
+ versionViewModel.versionResult.observe(this) {
+ if (it.version.toInt() > BuildConfig.VERSION_CODE) {
+ AlertControlDialog.Builder()
+ .setContext(this)
+ .setTitle("提示")
+ .setMessage("有新版本,是否更新?")
+ .setNegativeButton("稍后再说")
+ .setPositiveButton("立即下载")
+ .setOnDialogButtonClickListener(object :
+ AlertControlDialog.OnDialogButtonClickListener {
+ override fun onConfirmClick() {
+ downloadApk(it.path)
+ }
+
+ override fun onCancelClick() {
+
+ }
+ }).build().show()
+ } else {
+ "已是最新版本,无需更新".show(this)
+ }
+ }
+ }
+
+ override fun initEvent() {
+ leftBackView.setOnClickListener { finish() }
+
+ updateLayout.setOnClickListener {
+ versionViewModel.getApplicationVersion()
+ }
+ }
+
+ override fun initLayoutView(): Int = R.layout.activity_version_control
+
+ override fun observeRequestState() {
+ versionViewModel.loadState.observe(this) {
+ when (it) {
+ LoadState.Loading -> LoadingDialogHub.show(this, "检查版本中,请稍后")
+ else -> LoadingDialogHub.dismiss()
+ }
+ }
+ }
+
+ override fun setupTopBarLayout() {
+ ImmersionBar.with(this).statusBarDarkFont(true).init()
+ initLayoutImmersionBar(rootView)
+ titleView.visibility = View.GONE
+ }
+
+ private fun downloadApk(url: String?) {
+ progressDialog.setMessage("下载新版本中...")
+ progressDialog.show()
+ if (url.toString().isBlank()) {
+ "抱歉,版本下载失败".show(this)
+ return
+ }
+ /**
+ * http://139.198.18.188:8090/ems/apk/EMSCJTX202011052026(V3.14.0).apk
+ * */
+ val downloadPath = url!!.appendDownloadUrl(FileType.APK)
+ Log.d(kTag, "downloadApk => $downloadPath")
+ //开始下载
+ downloadPath.downloadFile(createDownloadFileDir().toString(), object : OnDownloadListener {
+ override fun onDownloadStart(totalBytes: Long) {
+ progressDialog.max = totalBytes.toInt()
+ }
+
+ override fun onProgressChanged(currentBytes: Long) {
+ progressDialog.progress = currentBytes.toInt()
+ }
+
+ override fun onDownloadEnd(file: File?) {
+ progressDialog.dismiss()
+ progressDialog.progress = 0
+ //安装APK
+ installApk(file)
+ }
+ })
+ }
+
+ private fun installApk(apkPackage: File?) {
+ if (apkPackage == null) {
+ "安装文件异常,无法安装".show(this)
+ return
+ }
+ val intent = Intent(Intent.ACTION_VIEW)
+ val data: Uri
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //判断版本大于等于7.0
+ data = FileProvider.getUriForFile(this, LocaleConstant.APP_AUTHORITY, apkPackage)
+ intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // 给目标应用一个临时授权
+ } else {
+ data = Uri.fromFile(apkPackage)
+ }
+ /**
+ * android 10
+ * content://com.casic.app.smartwell.fileprovider/smartWell/Download/1.0.1.apk
+ * */
+ intent.setDataAndType(data, "application/vnd.android.package-archive")
+ startActivity(intent)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_version_control.xml b/app/src/main/res/layout/activity_version_control.xml
new file mode 100644
index 0000000..95e5da6
--- /dev/null
+++ b/app/src/main/res/layout/activity_version_control.xml
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 620772b..a9f4ebc 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -24,6 +24,13 @@
- @drawable/bg_solid_layout_white_radius_10
+
+
+
+
+
+