From 6b335e64a7e58a37296e50e7e1acc42680ea9e44 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期五, 21 二月 2025 15:08:25 +0800
Subject: [PATCH] 设置
---
app/src/main/java/com/example/firstapp/MainActivity.kt | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 101 insertions(+), 18 deletions(-)
diff --git a/app/src/main/java/com/example/firstapp/MainActivity.kt b/app/src/main/java/com/example/firstapp/MainActivity.kt
index 9c9052d..df33c98 100644
--- a/app/src/main/java/com/example/firstapp/MainActivity.kt
+++ b/app/src/main/java/com/example/firstapp/MainActivity.kt
@@ -18,13 +18,20 @@
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
+import android.net.Uri
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
+import androidx.work.ExistingPeriodicWorkPolicy
+import androidx.work.PeriodicWorkRequestBuilder
+import androidx.work.WorkManager
+import com.example.firstapp.activity.LoginActivity
import com.example.firstapp.adapter.MyAdapter
-import com.example.firstapp.core.Core
-import com.example.firstapp.entity.Item
import com.example.firstapp.ui.home.HomeViewModel
+import com.example.firstapp.utils.Log
+import com.example.firstapp.workers.KeywordUpdateWorker
+import java.util.Calendar
+import java.util.concurrent.TimeUnit
class MainActivity : AppCompatActivity() {
@@ -41,18 +48,23 @@
if (isGranted) {
// 权限授予后注册短信监听器
registerSmsReceiver()
+ syncRecentSms()
} else {
// 权限拒绝,提示用户
Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show()
}
}
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
-
+ setupViews()
+// binding.btnLogout.setOnClickListener {
+// logout()
+// }
// 在此位置初始化 homeViewModel
homeViewModel = ViewModelProvider(this).get(HomeViewModel::class.java)
@@ -73,27 +85,14 @@
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_SMS) != android.content.pm.PackageManager.PERMISSION_GRANTED) {
// 请求权限
permissionRequest.launch(Manifest.permission.READ_SMS)
+ syncRecentSms()
} else {
// 权限已经授予,继续执行相关操作
registerSmsReceiver()
+ syncRecentSms()
}
-
-
- // 模拟数据
-// val items = listOf(
-// Item(1, "First Item", "This is the first item description"),
-// Item(2, "Second Item", "This is the second item description"),
-// Item(3, "Third Item", "This is the third item description")
-// )
-//
-// val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
-// recyclerView.layoutManager = LinearLayoutManager(this)
-// recyclerView.adapter = MyAdapter(items)
-
-// var codeList = Core.code.getAllDesc()
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
recyclerView.layoutManager = LinearLayoutManager(this)
-// recyclerView.adapter = MyAdapter(codeList)
// 初始化适配器
adapter = MyAdapter()
@@ -124,8 +123,92 @@
}
private fun registerSmsReceiver() {
+// 应用启动时执行 registerSmsReceiver()
+// 创建 SmsReceiver 实例
+// 注册广播接收器,开始监听短信
+// 等待新短信到达
+// 新短信到达时,系统发送广播
+// SmsReceiver 的 onReceive 方法被调用
+// 处理短信内容
+// 发送数据更新广播
+// MainActivity 接收到更新广播
+// 更新 UI
+ Log.d("SMS_DEBUG", "MainActivity收到数据更新广播")
smsReceiver = SmsReceiver()
val filter = IntentFilter(Telephony.Sms.Intents.SMS_RECEIVED_ACTION)
registerReceiver(smsReceiver, filter)
}
+
+ private fun setupKeywordUpdate() {
+ val updateRequest = PeriodicWorkRequestBuilder<KeywordUpdateWorker>(
+ 1, TimeUnit.HOURS, // 每小时更新一次
+ 15, TimeUnit.MINUTES // 灵活时间窗口
+ ).build()
+
+ WorkManager.getInstance(this).enqueueUniquePeriodicWork(
+ "keyword_update", ExistingPeriodicWorkPolicy.REPLACE, updateRequest
+ )
+ }
+
+ private fun setupViews() {
+ // 获取并显示当前登录的手机号
+ val phone =
+ getSharedPreferences("user_info", Context.MODE_PRIVATE).getString("phone", "") ?: ""
+
+// binding.apply {
+// tvPhone.text = "当前登录手机号:$phone"
+// }
+ }
+
+ private fun logout() {
+ // 清除登录信息
+ getSharedPreferences("user_info", Context.MODE_PRIVATE)
+ .edit()
+ .clear()
+ .apply()
+
+ // 跳转回登录页
+ startActivity(Intent(this, LoginActivity::class.java))
+ finish()
+ }
+
+ private fun syncRecentSms() {
+ try {
+ val calendar = Calendar.getInstance()
+ calendar.add(Calendar.DAY_OF_YEAR, -3) // 获取3天前的时间
+ val threeDaysAgo = calendar.timeInMillis
+
+ val cursor = contentResolver.query(
+ Uri.parse("content://sms/sent"),
+ arrayOf("address", "body", "date"),
+ "date >= ?",
+ arrayOf(threeDaysAgo.toString()),
+ "date DESC"
+ )
+
+ cursor?.use {
+ while (cursor.moveToNext()) {
+ val address = cursor.getString(cursor.getColumnIndexOrThrow("address"))
+ val body = cursor.getString(cursor.getColumnIndexOrThrow("body"))
+ val date = cursor.getLong(cursor.getColumnIndexOrThrow("date"))
+
+ // 使用正则表达式提取验证码
+ val regex = "\\d{4,6}".toRegex()
+ val matchResult = regex.find(body)
+ matchResult?.let { result ->
+ val code = result.value
+ // 使用 ViewModel 保存到数据库
+ println("address")
+ println(address)
+ println(code)
+ println(date)
+ // homeViewModel.saveCode(address, code, date)
+ }
+ }
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ Toast.makeText(this, "同步短信失败:${e.message}", Toast.LENGTH_SHORT).show()
+ }
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3