From 0cf0870889d65f5d11d0b2c8af7bca9442a7ba19 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期一, 21 四月 2025 17:14:50 +0800
Subject: [PATCH] Merge branch 'master' of http://47.96.225.205:8888/r/FirstApp2

---
 app/src/main/java/com/example/firstapp/activity/LoginActivity.kt |  139 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 137 insertions(+), 2 deletions(-)

diff --git a/app/src/main/java/com/example/firstapp/activity/LoginActivity.kt b/app/src/main/java/com/example/firstapp/activity/LoginActivity.kt
index 3516e12..6bde03a 100644
--- a/app/src/main/java/com/example/firstapp/activity/LoginActivity.kt
+++ b/app/src/main/java/com/example/firstapp/activity/LoginActivity.kt
@@ -1,18 +1,56 @@
 package com.example.firstapp.activity
+import android.app.AlertDialog
 import android.os.Bundle
 import android.widget.Toast
 import androidx.appcompat.app.AppCompatActivity
 import android.content.Intent
+import android.graphics.Color
+import android.text.SpannableString
+import android.text.Spanned
+import android.text.TextPaint
+import android.text.method.LinkMovementMethod
+import android.text.style.ClickableSpan
+import android.view.LayoutInflater
+import android.view.View
+import android.widget.Button
+import android.widget.CheckBox
+import android.widget.TextView
+import androidx.activity.viewModels
+import com.example.firstapp.MainActivity
+import com.example.firstapp.R
 import com.example.firstapp.databinding.ActivityLoginBinding
+import com.example.firstapp.ui.login.LoginViewModel
+import com.example.firstapp.utils.PreferencesManager
+import kotlin.system.exitProcess
 
 class LoginActivity : AppCompatActivity() {
     private lateinit var binding: ActivityLoginBinding
 
+    private val viewModel: LoginViewModel by viewModels()
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         binding = ActivityLoginBinding.inflate(layoutInflater)
-        setContentView(binding.root)
-        setupViews()
+
+        // 这里查看是否已经登录过,如果已经登录过则直接跳转到主页
+        // 获取token
+        val token = PreferencesManager.getToken()
+        if (!token.isNullOrEmpty()) {
+            startActivity(Intent(this, MainActivity::class.java))
+            finishAffinity() // 结束所有之前的Activity
+        }else{
+            setContentView(binding.root)
+            setupViews()
+
+            val phone=PreferencesManager.getLastLoginPhone()
+            // 如果phone不存在则展示弹框
+            if (phone.isNullOrEmpty()) {
+                showConfirmDialog()
+            }
+        }
+
+
+
     }
 
     private fun setupViews() {
@@ -34,11 +72,108 @@
 
         binding.tvUserAgreement.setOnClickListener {
             // 打开用户协议
+            startContentActivity("用户协议", "服务使用协议")
         }
 
         binding.tvPrivacyPolicy.setOnClickListener {
             // 打开隐私政策
+            startContentActivity("隐私协议", "隐私保护政策")
         }
     }
 
+    private fun showConfirmDialog() {
+        val dialogView = LayoutInflater.from(this).inflate(R.layout.login_protocol_dialog_custom, null)
+
+        val dialog = AlertDialog.Builder(this)
+            .setView(dialogView)
+            .create()
+
+        dialog.window?.setBackgroundDrawableResource(R.drawable.dialog_background)
+
+        val btnConfirm = dialogView.findViewById<Button>(R.id.btnConfirm)
+        btnConfirm.setOnClickListener {
+            dialog.dismiss()
+        }
+        val btnCancel = dialogView.findViewById<Button>(R.id.btnCancel)
+        btnCancel.setOnClickListener {
+            dialog.dismiss()
+            // 退出整个应用
+            finishAffinity() // 关闭当前Activity和它之上的所有Activity
+            exitProcess(0)   // 终止应用进程(需要引入 kotlin.system.exitProcess)
+        }
+
+        // 👇 设置可点击文字逻辑
+        val textView = dialogView.findViewById<TextView>(R.id.dialogMessage2)
+        val content = "您可以阅读「服务使用协议」和「隐私保护政策」了解相关信息。如果您同意,请点击同意,开始使用我们的服务。"
+        val spannableString = SpannableString(content)
+
+        val serviceStart = content.indexOf("「服务使用协议」")
+        val serviceEnd = serviceStart + "「服务使用协议」".length
+        val privacyStart = content.indexOf("「隐私保护政策」")
+        val privacyEnd = privacyStart + "「隐私保护政策」".length
+
+        spannableString.setSpan(object : ClickableSpan() {
+            override fun onClick(widget: View) {
+                startContentActivity("用户协议", "服务使用协议")
+//                Toast.makeText(this@LoginActivity, "点击了服务使用协议", Toast.LENGTH_SHORT).show()
+                // 可跳转 WebViewActivity 或打开链接
+            }
+
+            override fun updateDrawState(ds: TextPaint) {
+                super.updateDrawState(ds)
+                ds.color = Color.parseColor("#1E88E5")
+                ds.isUnderlineText = false
+            }
+        }, serviceStart, serviceEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
+
+        spannableString.setSpan(object : ClickableSpan() {
+            override fun onClick(widget: View) {
+                startContentActivity("隐私协议", "隐私保护政策")
+//                Toast.makeText(this@LoginActivity, "点击了隐私保护政策", Toast.LENGTH_SHORT).show()
+            }
+
+            override fun updateDrawState(ds: TextPaint) {
+                super.updateDrawState(ds)
+                ds.color = Color.parseColor("#1E88E5")
+                ds.isUnderlineText = false
+            }
+        }, privacyStart, privacyEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
+
+        textView.text = spannableString
+        textView.movementMethod = LinkMovementMethod.getInstance()
+
+        dialog.show()
+    }
+
+
+    /*    private fun showConfirmDialog() {
+
+            val dialogView = LayoutInflater.from(this).inflate(R.layout.login_protocol_dialog_custom, null)
+
+            val dialog = AlertDialog.Builder(this)
+                .setView(dialogView)
+                .create()
+
+            // 设置自定义背景
+            dialog.window?.setBackgroundDrawableResource(R.drawable.dialog_background)
+
+            // 获取按钮并设置点击事件
+            val btnConfirm = dialogView.findViewById<Button>(R.id.btnConfirm)
+            btnConfirm.setOnClickListener {
+                // 将协议勾选上
+                dialog.dismiss()
+            }
+
+            // 显示对话框
+            dialog.show()
+        }*/
+
+    private fun startContentActivity(id: String, title: String) {
+        val intent = Intent(this, ContentDetailActivity::class.java).apply {
+            putExtra(ContentDetailActivity.ID, id)
+            putExtra(ContentDetailActivity.EXTRA_TITLE, title)
+        }
+        startActivity(intent)
+    }
+
 }
\ No newline at end of file

--
Gitblit v1.9.3