自动更新

This commit is contained in:
2025-12-07 16:01:10 +08:00
parent cde4d0c0e9
commit 1bd7a42a9a
2 changed files with 50 additions and 2 deletions

View File

@@ -2,10 +2,13 @@ package com.example.initiateaphonecallapp
import android.Manifest
import android.app.AlertDialog
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Environment
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
@@ -24,6 +27,11 @@ import com.example.initiateaphonecallapp.ui.LoginSms.LoginSmsScreen
import com.example.initiateaphonecallapp.ui.MainScreen
import com.example.initiateaphonecallapp.ui.login.LoginScreen
import com.example.initiateaphonecallapp.ui.theme.InitiateAPhoneCallAppTheme
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.json.JSONObject
import java.net.URL
class MainActivity : ComponentActivity() {
private val requiredPermissions = arrayOf(
@@ -52,6 +60,7 @@ class MainActivity : ComponentActivity() {
private lateinit var storagePermissionManager: StoragePermissionManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
checkUpdate()
CallRecordManager.initialize(this)
println("🚀 Application: CallRecordManager 初始化完成")
@@ -131,6 +140,45 @@ class MainActivity : ComponentActivity() {
}
}
fun checkUpdate() {
CoroutineScope(Dispatchers.IO).launch {
try {
// 1⃣ 获取服务器版本信息
val jsonString = URL("http://120.26.58.34/app/version.json").readText()
// val jsonString = URL("http://121.43.240.248/app/version.json").readText()
val json = JSONObject(jsonString)
val serverVersionCode = json.getInt("version")
val apkUrl = json.getString("apkUrl")
// 2⃣ 获取本地版本
val localVersionCode = 1
if (serverVersionCode > localVersionCode) {
Log.d("Update", "检测到新版本: $serverVersionCode")
runOnUiThread { promptDownloadApk(apkUrl) }
} else {
Log.d("Update", "已是最新版本")
}
} catch (e: Exception) {
Log.e("Update", "检查更新失败: ${e.message}")
}
}
}
private fun promptDownloadApk(apkUrl: String) {
AlertDialog.Builder(this)
.setTitle("发现新版本")
.setMessage("检测到新版本,是否下载并安装?")
.setPositiveButton("下载") { _, _ ->
// 打开浏览器下载
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(apkUrl))
startActivity(intent)
}
.setNegativeButton("取消", null)
.setCancelable(false)
.show()
}
private fun hasAllPermissions(): Boolean {
return requiredPermissions.all { permission ->
ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED

View File

@@ -1,8 +1,8 @@
package com.example.initiateaphonecallapp.ui.login
data class LoginState(
val username: String = "sadmin",
val password: String = "admin123",
val username: String = "",
val password: String = "",
val isLoading: Boolean = false,
val errorMessage: String = "",
val isLoginSuccess: Boolean = false,