diff --git a/app/src/main/java/com/example/initiateaphonecallapp/MainActivity.kt b/app/src/main/java/com/example/initiateaphonecallapp/MainActivity.kt index 6dd9173..91770e0 100644 --- a/app/src/main/java/com/example/initiateaphonecallapp/MainActivity.kt +++ b/app/src/main/java/com/example/initiateaphonecallapp/MainActivity.kt @@ -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 diff --git a/app/src/main/java/com/example/initiateaphonecallapp/ui/login/LoginState.kt b/app/src/main/java/com/example/initiateaphonecallapp/ui/login/LoginState.kt index 79df18d..3dd4ee1 100644 --- a/app/src/main/java/com/example/initiateaphonecallapp/ui/login/LoginState.kt +++ b/app/src/main/java/com/example/initiateaphonecallapp/ui/login/LoginState.kt @@ -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,