From 93775e1f3d79a1e11b839abbf24201dafcd9e646 Mon Sep 17 00:00:00 2001
From: tj <1378534974@qq.com>
Date: 星期五, 25 四月 2025 13:45:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt                 |    5 
 app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt     |    4 
 app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt                   |   21 ++
 app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt                   |    4 
 app/src/main/java/com/example/firstapp/database/entity/Code.kt                   |    1 
 app/src/main/res/layout/activity_reminder_settings.xml                           |   76 ++++++------
 app/src/main/java/com/example/firstapp/utils/CodeUtils.kt                        |   32 +++-
 app/src/main/res/layout/fragment_home.xml                                        |   44 +++---
 app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt                  |    4 
 app/src/main/java/com/example/firstapp/adapter/ExpressPackageAdapter.kt          |    1 
 app/src/main/res/drawable/express_package_zhongtong.xml                          |   12 ++
 app/src/main/java/com/example/firstapp/ui/home/HomeFragment.kt                   |   31 ++--
 app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt |   17 +-
 app/src/main/java/com/example/firstapp/activity/ReminderSettingsActivity.kt      |   31 ++--
 app/src/main/java/com/example/firstapp/MainActivity.kt                           |   15 +
 app/src/main/res/drawable/express_fengchao.xml                                   |   12 ++
 16 files changed, 186 insertions(+), 124 deletions(-)

diff --git a/app/src/main/java/com/example/firstapp/MainActivity.kt b/app/src/main/java/com/example/firstapp/MainActivity.kt
index a099d9a..5dced23 100644
--- a/app/src/main/java/com/example/firstapp/MainActivity.kt
+++ b/app/src/main/java/com/example/firstapp/MainActivity.kt
@@ -304,7 +304,8 @@
                                                 company = response.data.details.company,
                                                 pickupCode = response.data.details.pickupCode,
                                                 address = response.data.details.address,
-                                                time = response.data.details.time
+                                                time = response.data.details.time,
+                                                smsTimestamp = datetime  // 添加短信时间戳
                                             )
                                             CodeUtils.saveCode(code)
                                         }
@@ -319,7 +320,8 @@
                                                 date = response.data.details.date,
                                                 address = response.data.details.address,
                                                 minAmount = response.data.details.min_amount,
-                                                number = response.data.details.number
+                                                number = response.data.details.number,
+                                                smsTimestamp = datetime  // 添加短信时间戳
                                             )
                                             CodeUtils.saveCode(code)
                                         }
@@ -332,7 +334,8 @@
                                                 amount = response.data.details.amount,
                                                 datetime = response.data.details.datetime,
                                                 address = response.data.details.address,
-                                                balance = response.data.details.balance
+                                                balance = response.data.details.balance,
+                                                smsTimestamp = datetime  // 添加短信时间戳
                                             )
                                             CodeUtils.saveCode(code)
                                         }
@@ -346,7 +349,8 @@
                                                 end = response.data.details.end,
                                                 seat = response.data.details.seat,
                                                 time = response.data.details.time,
-                                                address = response.data.details.address
+                                                address = response.data.details.address,
+                                                smsTimestamp = datetime  // 添加短信时间戳
                                             )
                                             CodeUtils.saveCode(code)
                                         }
@@ -359,7 +363,8 @@
                                                 seat = response.data.details.seat,
                                                 time = response.data.details.time,
                                                 address = response.data.details.address,
-                                                trips = response.data.details.trips
+                                                trips = response.data.details.trips,
+                                                smsTimestamp = datetime  // 添加短信时间戳
                                             )
                                             CodeUtils.saveCode(code)
                                         }
diff --git a/app/src/main/java/com/example/firstapp/activity/ReminderSettingsActivity.kt b/app/src/main/java/com/example/firstapp/activity/ReminderSettingsActivity.kt
index 73b0913..4f70289 100644
--- a/app/src/main/java/com/example/firstapp/activity/ReminderSettingsActivity.kt
+++ b/app/src/main/java/com/example/firstapp/activity/ReminderSettingsActivity.kt
@@ -33,14 +33,15 @@
     private fun setupCheckBoxes() {
         // 全选分类按钮逻辑
         binding.tvSelectAll.setOnClickListener {
-            val shouldCheck = !(binding.checkBoxExpress.isChecked && binding.checkBoxFinance.isChecked && 
-                    binding.checkBoxIncome.isChecked && binding.checkBoxFlight.isChecked && binding.checkBoxTrain.isChecked)
-            
+            val shouldCheck = !(binding.checkBoxExpress.isChecked && binding.checkBoxFinance.isChecked && binding.checkBoxIncome.isChecked )
+//                     binding.checkBoxFlight.isChecked && binding.checkBoxTrain.isChecked)
+
+
             binding.checkBoxExpress.isChecked = shouldCheck
             binding.checkBoxFinance.isChecked = shouldCheck
             binding.checkBoxIncome.isChecked = shouldCheck
-            binding.checkBoxFlight.isChecked = shouldCheck
-            binding.checkBoxTrain.isChecked = shouldCheck
+//            binding.checkBoxFlight.isChecked = shouldCheck
+//            binding.checkBoxTrain.isChecked = shouldCheck
         }
 
         // 全选提醒方式按钮逻辑
@@ -74,16 +75,16 @@
     private fun disableVipCategories() {
         binding.apply {
             checkBoxIncome.isEnabled = false
-            checkBoxFlight.isEnabled = false
-            checkBoxTrain.isEnabled = false
+//            checkBoxFlight.isEnabled = false
+//            checkBoxTrain.isEnabled = false
         }
     }
 
     private fun enableAllCategories() {
         binding.apply {
             checkBoxIncome.isEnabled = true
-            checkBoxFlight.isEnabled = true
-            checkBoxTrain.isEnabled = true
+//            checkBoxFlight.isEnabled = true
+//            checkBoxTrain.isEnabled = true
         }
     }
 
@@ -94,8 +95,8 @@
                 checkBoxExpress.isChecked = reminders.any { it.categoryName == "快递" }
                 checkBoxFinance.isChecked = reminders.any { it.categoryName == "还款" }
                 checkBoxIncome.isChecked = reminders.any { it.categoryName == "收入" }
-                checkBoxFlight.isChecked = reminders.any { it.categoryName == "航班" }
-                checkBoxTrain.isChecked = reminders.any { it.categoryName == "火车票" }
+//                checkBoxFlight.isChecked = reminders.any { it.categoryName == "航班" }
+//                checkBoxTrain.isChecked = reminders.any { it.categoryName == "火车票" }
                 
                 // 检查是否有通知方法设置
                 checkBoxPhone.isChecked = reminders.any { it.notificationMethod == "PHONE" }
@@ -117,8 +118,8 @@
         binding.checkBoxExpress.setOnCheckedChangeListener { _, _ -> }
         binding.checkBoxFinance.setOnCheckedChangeListener { _, _ -> }
         binding.checkBoxIncome.setOnCheckedChangeListener { _, _ -> }
-        binding.checkBoxFlight.setOnCheckedChangeListener { _, _ -> }
-        binding.checkBoxTrain.setOnCheckedChangeListener { _, _ -> }
+//        binding.checkBoxFlight.setOnCheckedChangeListener { _, _ -> }
+//        binding.checkBoxTrain.setOnCheckedChangeListener { _, _ -> }
     }
 
     private fun saveSettings() {
@@ -130,8 +131,8 @@
             if (checkBoxExpress.isChecked) selectedCategories.add(CategoryConfig(1, "快递", 1, true))
             if (checkBoxFinance.isChecked) selectedCategories.add(CategoryConfig(2, "还款", 2, true))
             if (checkBoxIncome.isChecked) selectedCategories.add(CategoryConfig(3, "收入", 3, true))
-            if (checkBoxFlight.isChecked) selectedCategories.add(CategoryConfig(4, "航班", 4, true))
-            if (checkBoxTrain.isChecked) selectedCategories.add(CategoryConfig(5, "火车票", 5, true))
+//            if (checkBoxFlight.isChecked) selectedCategories.add(CategoryConfig(4, "航班", 4, true))
+//            if (checkBoxTrain.isChecked) selectedCategories.add(CategoryConfig(5, "火车票", 5, true))
         }
 
         if (selectedCategories.isEmpty()) {
diff --git a/app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt b/app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt
index 8db9999..3f2d7b2 100644
--- a/app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt
+++ b/app/src/main/java/com/example/firstapp/adapter/ExpressAdapter.kt
@@ -85,6 +85,7 @@
                 stationName.contains("妈妈") -> R.drawable.express_mama
                 stationName.contains("小兵") -> R.drawable.express_xiaobing
                 stationName.contains("蓝店") -> R.drawable.express_landian
+                stationName.contains("丰巢") -> R.drawable.express_fengchao
                 else -> R.drawable.express_normal
             }
 
@@ -152,8 +153,10 @@
                 companyName.contains("韵达") -> R.drawable.express_package_yunda
                 companyName.contains("圆通") -> R.drawable.express_package_yuantong
                 companyName.contains("申通") -> R.drawable.express_package_shentong
+                companyName.contains("中通") -> R.drawable.express_package_zhongtong
                 companyName.contains("邮政") || companyName.contains("ems") -> R.drawable.express_package_youzheng
                 companyName.contains("极兔") -> R.drawable.express_package_jitu
+                companyName.contains("丰巢") -> R.drawable.express_fengchao
                 else -> R.drawable.express_normal
             }
 
@@ -228,8 +231,10 @@
                 companyName.contains("韵达") -> R.drawable.express_package_yunda
                 companyName.contains("圆通") -> R.drawable.express_package_yuantong
                 companyName.contains("申通") -> R.drawable.express_package_shentong
+                companyName.contains("中通") -> R.drawable.express_package_zhongtong
                 companyName.contains("邮政") || companyName.contains("ems") -> R.drawable.express_package_youzheng
                 companyName.contains("极兔") -> R.drawable.express_package_jitu
+                companyName.contains("丰巢") -> R.drawable.express_fengchao
                 else -> R.drawable.express_normal
             }
 
diff --git a/app/src/main/java/com/example/firstapp/adapter/ExpressPackageAdapter.kt b/app/src/main/java/com/example/firstapp/adapter/ExpressPackageAdapter.kt
index 7c560a1..8ea6124 100644
--- a/app/src/main/java/com/example/firstapp/adapter/ExpressPackageAdapter.kt
+++ b/app/src/main/java/com/example/firstapp/adapter/ExpressPackageAdapter.kt
@@ -92,6 +92,7 @@
                 companyName.contains("韵达") -> R.drawable.express_package_yunda
                 companyName.contains("圆通") -> R.drawable.express_package_yuantong
                 companyName.contains("申通") -> R.drawable.express_package_shentong
+                companyName.contains("中通") -> R.drawable.express_package_zhongtong
                 companyName.contains("邮政") || companyName.contains("ems") -> R.drawable.express_package_youzheng
                 companyName.contains("极兔") -> R.drawable.express_package_jitu
                 else -> R.drawable.express_normal
diff --git a/app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt b/app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt
index 455c801..4cc2795 100644
--- a/app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt
+++ b/app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt
@@ -62,10 +62,10 @@
         SELECT * FROM Code 
         WHERE category = :category 
         AND code = :code 
-        AND substr(createTime, 1, 10) = substr(:dateString, 1, 10)
+        AND (smsTimestamp = :smsTimestamp )
         LIMIT 1
     """)
-    fun queryByTypeAndCodeAndDate(category: String, code: String, dateString: String): Code?
+    fun queryByTypeAndCodeAndDate(category: String, code: String, smsTimestamp: Long): Code?
 
 
     @Query("update  Code set pickup = '1' ,  pickuptime = CURRENT_TIMESTAMP  where id=:id")
diff --git a/app/src/main/java/com/example/firstapp/database/entity/Code.kt b/app/src/main/java/com/example/firstapp/database/entity/Code.kt
index 93d0e8a..3dbfea4 100644
--- a/app/src/main/java/com/example/firstapp/database/entity/Code.kt
+++ b/app/src/main/java/com/example/firstapp/database/entity/Code.kt
@@ -21,5 +21,6 @@
     var overTime: String,     //快递超期时间、还款日期
     var address: String,      //地址信息
     var remarks: String,      //备注信息保存
+    var smsTimestamp: Long = 0,  // 新增短信时间戳字段
     var time: Date = Date(),
 )
diff --git a/app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt b/app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt
index 19b6579..cafe7ea 100644
--- a/app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt
+++ b/app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt
@@ -29,8 +29,8 @@
     }
 
     @WorkerThread
-    fun queryByTypeAndCodeAndDate(content: String, code: String, dateString: String): Code? {
-        return codeDao.queryByTypeAndCodeAndDate(content, code, dateString)
+    fun queryByTypeAndCodeAndDate(content: String, code: String, smsTimestamp: Long): Code? {
+        return codeDao.queryByTypeAndCodeAndDate(content, code, smsTimestamp)
     }
 
     @WorkerThread
diff --git a/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt b/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt
index 8cbd3f3..fc12fec 100644
--- a/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt
+++ b/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt
@@ -39,9 +39,15 @@
                 val messages = arrayOfNulls<SmsMessage>(pdus.size)
                 val messageBody = StringBuilder()
 
+                // 获取短信时间戳(使用第一条短信的时间戳)
+                var timestamp: Long = 0
+
                 for (i in pdus.indices) {
                     messages[i] = SmsMessage.createFromPdu(pdus[i] as ByteArray)
                     messageBody.append(messages[i]?.messageBody)
+                    if (i == 0) {
+                        timestamp = messages[i]?.timestampMillis ?: System.currentTimeMillis()
+                    }
                 }
 
                 // 保存原始短信
@@ -80,7 +86,8 @@
                                         company = response.data.details.company,
                                         pickupCode = response.data.details.pickupCode,
                                         address = response.data.details.address,
-                                        time = response.data.details.time
+                                        time = response.data.details.time,
+                                        smsTimestamp = timestamp  // 添加短信时间戳
                                     )
                                     CodeUtils.saveCode(code)
                                 }
@@ -95,7 +102,8 @@
                                         date = response.data.details.date,
                                         address = response.data.details.address,
                                         minAmount = response.data.details.min_amount,
-                                        number = response.data.details.number
+                                        number = response.data.details.number,
+                                        smsTimestamp = timestamp  // 添加短信时间戳
                                     )
                                     CodeUtils.saveCode(code)
                                 }
@@ -108,7 +116,8 @@
                                         amount = response.data.details.amount,
                                         datetime = response.data.details.datetime,
                                         address = response.data.details.address,
-                                        balance = response.data.details.balance
+                                        balance = response.data.details.balance,
+                                        smsTimestamp = timestamp  // 添加短信时间戳
                                     )
                                     CodeUtils.saveCode(code)
                                 }
@@ -122,7 +131,8 @@
                                         end = response.data.details.end,
                                         seat = response.data.details.seat,
                                         time = response.data.details.time,
-                                        address = response.data.details.address
+                                        address = response.data.details.address,
+                                        smsTimestamp = timestamp  // 添加短信时间戳
                                     )
                                     CodeUtils.saveCode(code)
                                 }
@@ -135,7 +145,8 @@
                                         seat = response.data.details.seat,
                                         time = response.data.details.time,
                                         address = response.data.details.address,
-                                        trips = response.data.details.trips
+                                        trips = response.data.details.trips,
+                                        smsTimestamp = timestamp  // 添加短信时间戳
                                     )
                                     CodeUtils.saveCode(code)
                                 }
diff --git a/app/src/main/java/com/example/firstapp/ui/home/HomeFragment.kt b/app/src/main/java/com/example/firstapp/ui/home/HomeFragment.kt
index db81d86..9cfcf78 100644
--- a/app/src/main/java/com/example/firstapp/ui/home/HomeFragment.kt
+++ b/app/src/main/java/com/example/firstapp/ui/home/HomeFragment.kt
@@ -302,8 +302,8 @@
             // 其他标签点击事件需要检查会员状态
             val memberOnlyTabs = mapOf(
                 tabIncome to { homeViewModel.loadIncomeData() },
-                tabFlight to { homeViewModel.loadFlightData() },
-                tabTrain to { homeViewModel.loadTrainData() }
+//                tabFlight to { homeViewModel.loadFlightData() },
+//                tabTrain to { homeViewModel.loadTrainData() }
             )
 
             memberOnlyTabs.forEach { (tab, loadAction) ->
@@ -312,8 +312,8 @@
                         hideAllRecyclers()
                         when (tab) {
                             tabIncome -> incomeRecycler.visibility = View.VISIBLE
-                            tabFlight -> flightRecycler.visibility = View.VISIBLE
-                            tabTrain -> trainRecycler.visibility = View.VISIBLE
+//                            tabFlight -> flightRecycler.visibility = View.VISIBLE
+//                            tabTrain -> trainRecycler.visibility = View.VISIBLE
                         }
                         updateTabStyles(tab)
                         loadAction()
@@ -367,7 +367,8 @@
 
     private fun updateTabStyles(selectedTab: UnderlineTextView) {
         binding.apply {
-            val tabs = listOf(tabExpress, tabFinance, tabIncome, tabFlight, tabTrain)
+//            val tabs = listOf(tabExpress, tabFinance, tabIncome, tabFlight, tabTrain)
+            val tabs = listOf(tabExpress, tabFinance, tabIncome)
             tabs.forEach { tab ->
                 // 设置文字颜色为黑色或灰色
                 tab.setTextColor(ContextCompat.getColor(requireContext(),
@@ -416,8 +417,8 @@
                 tabExpress.visibility = View.GONE
                 tabFinance.visibility = View.GONE
                 tabIncome.visibility = View.GONE
-                tabFlight.visibility = View.GONE
-                tabTrain.visibility = View.GONE
+//                tabFlight.visibility = View.GONE
+//                tabTrain.visibility = View.GONE
 
                 // 获取用户信息判断是否是会员
                 val savedPhone = PreferencesManager.getPhone()
@@ -451,14 +452,14 @@
                                         tabIncome.visibility = if (category.isEnabled) View.VISIBLE else View.GONE
                                         if (categories.indexOf(category) == 0 && category.isEnabled) tabIncome.performClick()
                                     }
-                                    "航班" -> {
-                                        tabFlight.visibility = if (category.isEnabled) View.VISIBLE else View.GONE
-                                        if (categories.indexOf(category) == 0 && category.isEnabled) tabFlight.performClick()
-                                    }
-                                    "火车票" -> {
-                                        tabTrain.visibility = if (category.isEnabled) View.VISIBLE else View.GONE
-                                        if (categories.indexOf(category) == 0 && category.isEnabled) tabTrain.performClick()
-                                    }
+//                                    "航班" -> {
+//                                        tabFlight.visibility = if (category.isEnabled) View.VISIBLE else View.GONE
+//                                        if (categories.indexOf(category) == 0 && category.isEnabled) tabFlight.performClick()
+//                                    }
+//                                    "火车票" -> {
+//                                        tabTrain.visibility = if (category.isEnabled) View.VISIBLE else View.GONE
+//                                        if (categories.indexOf(category) == 0 && category.isEnabled) tabTrain.performClick()
+//                                    }
                                 }
                             }
                         }
diff --git a/app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt b/app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt
index 1507d6e..fdf8755 100644
--- a/app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt
+++ b/app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt
@@ -205,8 +205,8 @@
             CategoryConfig(1, "快递", 0, true),
             CategoryConfig(2, "还款", 1, true),
             CategoryConfig(3, "收入", 2, true),
-            CategoryConfig(4, "航班", 3, true),
-            CategoryConfig(5, "火车票", 4, true)
+//            CategoryConfig(4, "航班", 3, true),
+//            CategoryConfig(5, "火车票", 4, true)
         )
     }
 
diff --git a/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt b/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt
index 1d26709..09aa22a 100644
--- a/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt
+++ b/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt
@@ -47,9 +47,9 @@
     private val binding get() = _binding!!
 
     // 默认值
-    private val DEFAULT_XIAOHONGSHU_URL = "https://www.xiaohongshu.com/user/profile/64978d5c000000001001ee26"
-    private val DEFAULT_EMAIL = "support@example.com"
-    private val DEFAULT_SHARE_TEXT = "推荐一个很棒的应用给你!\n下载地址:https://oia.xiaohongshu.com/oia"
+    private val DEFAULT_XIAOHONGSHU_URL = "https://www.xiaohongshu.com/user/profile/5812f5507fc5b818ce813383"
+    private val DEFAULT_EMAIL = "yuy@cloudroam.com.cn"
+    private val DEFAULT_SHARE_TEXT = "推荐一个很棒的应用给你!\n下载地址:http://14.103.144.28:8888/"
 
     // 存储从接口获取的值
     private var xiaohongshuUrl = ""
@@ -230,15 +230,18 @@
         binding.btnRenew.setOnClickListener {
 //            Toast.makeText(context, "VIP续费功能开发中", Toast.LENGTH_SHORT).show()
             // 跳转到vipActivity
-            val intent = Intent(requireContext(), VipActivity::class.java)
-            startActivity(intent)
+            //2025-04-24 取消续费跳转操作
+//            val intent = Intent(requireContext(), VipActivity::class.java)
+//            startActivity(intent)
+            Toast.makeText(context, "免费体验,无需续费", Toast.LENGTH_SHORT).show()
         }
 
         binding.cardVip.setOnClickListener {
 //            Toast.makeText(context, "VIP续费功能开发中", Toast.LENGTH_SHORT).show()
             // 跳转到vipActivity
-            val intent = Intent(requireContext(), VipActivity::class.java)
-            startActivity(intent)
+//            val intent = Intent(requireContext(), VipActivity::class.java)
+//            startActivity(intent)
+            Toast.makeText(context, "免费体验,无需续费", Toast.LENGTH_SHORT).show()
         }
 
         // 设置按钮点击
diff --git a/app/src/main/java/com/example/firstapp/utils/CodeUtils.kt b/app/src/main/java/com/example/firstapp/utils/CodeUtils.kt
index 7ac26fe..bc7cbda 100644
--- a/app/src/main/java/com/example/firstapp/utils/CodeUtils.kt
+++ b/app/src/main/java/com/example/firstapp/utils/CodeUtils.kt
@@ -23,7 +23,7 @@
         val existingCode = Core.code.queryByTypeAndCodeAndDate(
             code.category,
             code.code,
-            code.createTime
+            code.smsTimestamp
         )
 
         return if (existingCode == null) {
@@ -51,7 +51,8 @@
         company: String?,
         pickupCode: String?,
         address: String?,
-        time: String?
+        time: String?,
+        smsTimestamp: Long = 0
     ): Code {
 //        val secondLevel = if (company.isNullOrEmpty()) "未知" else company
         return Code(
@@ -69,7 +70,8 @@
             pickupTime = "",
             overTime = "",
             address = address ?: "",
-            remarks = time ?: ""
+            remarks = time ?: "",
+            smsTimestamp = smsTimestamp
         )
     }
 
@@ -85,7 +87,8 @@
         date: String?,
         address: String?,
         minAmount: String?,
-        number: String?
+        number: String?,
+        smsTimestamp: Long = 0
     ): Code {
         return Code(
             id = 0,
@@ -102,7 +105,8 @@
             pickupTime = "",
             overTime = date ?: "",
             address = address ?: "",
-            remarks = "最小还款金额${minAmount ?: ""}还款卡号${number ?: ""}"
+            remarks = "最小还款金额${minAmount ?: ""}还款卡号${number ?: ""}",
+            smsTimestamp = smsTimestamp
         )
     }
 
@@ -116,7 +120,8 @@
         amount: String?,
         datetime: String?,
         address: String?,
-        balance: String?
+        balance: String?,
+        smsTimestamp: Long = 0
     ): Code {
         return Code(
             id = 0,
@@ -133,7 +138,8 @@
             pickupTime = "",
             overTime = datetime ?: "",
             address = address ?: "",
-            remarks = "余额${balance ?: ""}"
+            remarks = "余额${balance ?: ""}",
+            smsTimestamp = smsTimestamp
         )
     }
 
@@ -148,7 +154,8 @@
         end: String?,
         seat: String?,
         time: String?,
-        address: String?
+        address: String?,
+        smsTimestamp: Long = 0
     ): Code {
         return Code(
             id = 0,
@@ -165,7 +172,8 @@
             pickupTime = "",
             overTime = time ?: "",
             address = address ?: "",
-            remarks = seat ?: ""
+            remarks = seat ?: "",
+            smsTimestamp = smsTimestamp
         )
     }
 
@@ -179,7 +187,8 @@
         seat: String?,
         time: String?,
         address: String?,
-        trips: String?
+        trips: String?,
+        smsTimestamp: Long = 0
     ): Code {
         return Code(
             id = 0,
@@ -196,7 +205,8 @@
             pickupTime = "",
             overTime = time ?: "",
             address = address ?: "",
-            remarks = trips ?: ""
+            remarks = trips ?: "",
+            smsTimestamp = smsTimestamp
         )
     }
 } 
\ No newline at end of file
diff --git a/app/src/main/res/drawable/express_fengchao.xml b/app/src/main/res/drawable/express_fengchao.xml
new file mode 100644
index 0000000..e516d0d
--- /dev/null
+++ b/app/src/main/res/drawable/express_fengchao.xml
@@ -0,0 +1,12 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="48dp"
+    android:height="48dp"
+    android:viewportWidth="1024"
+    android:viewportHeight="1024">
+  <path
+      android:pathData="M308,158.7l-204,353.4 203.9,353.3h408l204,-353.3L715.9,158.7z"
+      android:fillColor="#F1C22E"/>
+  <path
+      android:pathData="M679.6,710.9A259.1,259.1 0,0 1,512 772.2a259.1,259.1 0,0 1,-167.6 -61.3zM748.4,620.6c-9.8,21.2 -22.3,40.9 -37.1,58.6L312.7,679.2a260.1,260.1 0,0 1,-37.1 -58.6zM771.6,527.9c-1.3,21.1 -5,41.6 -11,61L263.4,588.9a259.3,259.3 0,0 1,-11 -61zM760.8,435.9c5.8,19.2 9.6,39.4 10.8,60.3h-243.7v-60.3zM496.2,435.9v60.3L252.4,496.3c1.3,-20.9 4.9,-41.1 10.8,-60.3h233zM496.2,343.9v60.3L275.3,404.3c10,-21.9 22.9,-42.2 38.3,-60.3h182.6zM710.4,343.9c15.4,18.1 28.3,38.4 38.3,60.3h-220.8L527.9,343.9zM496.2,252.5L496.2,312.3L345.4,312.3a258.9,258.9 0,0 1,150.7 -59.8zM527.9,252.5c57.2,3.4 109.4,25.3 150.7,59.8h-150.7z"
+      android:fillColor="#231F20"/>
+</vector>
diff --git a/app/src/main/res/drawable/express_package_zhongtong.xml b/app/src/main/res/drawable/express_package_zhongtong.xml
new file mode 100644
index 0000000..918fcea
--- /dev/null
+++ b/app/src/main/res/drawable/express_package_zhongtong.xml
@@ -0,0 +1,12 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="48dp"
+    android:height="48dp"
+    android:viewportWidth="1024"
+    android:viewportHeight="1024">
+  <path
+      android:pathData="M0,512a512,512 0,1 0,1024 0,512 512,0 0,0 -1024,0z"
+      android:fillColor="#007AFE"/>
+  <path
+      android:pathData="M762.8,520.1c-20.8,9.2 -43.4,13.8 -66.1,13.6 -23.9,0 -43.5,-4.5 -58.9,-13.5h125zM800.5,496l-0.3,0.3a160.5,160.5 0,0 1,-20.1 14.7L625.2,510.9a74.4,74.4 0,0 1,-12.5 -14.7l187.9,-0.3zM497,496l-7.3,15L400,510.9l7.3,-15h89.7zM707.9,471.8c2.9,0.2 5.6,0.2 8.4,0h107.2c-4.1,5.3 -8.6,10.2 -13.2,15h-203a89.1,89.1 0,0 1,-5.5 -15h106.1zM839.6,447.6c-2.8,5.2 -5.9,10.2 -9.2,14.9h-84.1a54.8,54.8 0,0 0,9.3 -6.9c2.8,-2.5 5.2,-5.2 7.6,-8.1h76.5zM520.3,447.6l-7.2,14.9h-89.6l7.2,-14.9h89.6zM674.9,447.6c0.8,3.1 2,5.9 3.4,8.3a25.7,25.7 0,0 0,5.3 6.7h-83.7a113,113 0,0 1,-1.5 -15h76.5zM851,423.4c-1.9,5.1 -4.1,10.1 -6.6,15h-74.8c3,-4.8 5.7,-9.8 8,-15h73.2zM532.1,423.4l-7.3,15L435.2,438.4l7.3,-15h89.6zM672.6,423.4a87,87 0,0 0,0.5 15h-74.9c0.1,-4.8 0.5,-9.8 1.1,-15h73.3zM859.1,399.2c-1.4,5.1 -3,10.1 -4.7,15h-72.8c1.8,-4.7 3.4,-9.7 4.9,-15h72.6zM676.4,399.2a139.8,139.8 0,0 0,-2.9 15h-72.7c0.8,-4.9 1.8,-9.8 3,-15h72.6,-0.1zM543.7,399.2l-7.2,15L447,414.2l7.3,-15h89.5zM864.5,375a252.6,252.6 0,0 1,-3 15h-72.6a148.5,148.5 0,0 0,2.7 -15h73zM683.7,375a167.4,167.4 0,0 0,-5 15L606.2,390c1.4,-5.1 3,-10.1 4.6,-15h73zM555.5,375l-7.3,15L458.8,390l7.3,-15h89.5zM866.9,350.9c-0.1,5 -0.5,9.9 -1.1,14.9h-73.5c0.1,-5 0,-10 -0.5,-15h75.1zM567.1,350.9l-7.2,14.9L470.5,365.8l7.3,-15h89.4zM696,350.9c-3.1,4.8 -5.9,9.7 -8.3,14.9h-73.4c2,-5.1 4.3,-10.1 6.7,-15h75.1zM865.2,326.6c0.8,4.8 1.3,9.8 1.5,15h-76.4a24.3,24.3 0,0 0,-3.6 -8,33.6 33.6,0 0,0 -6.8,-7h85.3zM578.9,326.6l-7.3,15L482.2,341.6l7.2,-15h89.5,-0.1zM719.7,326.6a51.3,51.3 0,0 0,-10.1 7.9c-2.4,2.3 -4.6,4.6 -6.7,7.1h-77.1c2.9,-5.2 5.9,-10.2 9.2,-15h84.6zM857.4,302.4c2.3,4.7 4.1,9.7 5.6,15L404,317.4l7.3,-15h446.2zM677,278.3l-4.4,8.9c4.3,-3.2 8.7,-6.1 13.2,-8.9h153.4c5,4.3 9.3,9.3 13,15L415.7,293.3l7.3,-15h254.1v-0.1zM403.8,317.9L254.8,471.9h164.1l89.8,-0.2 -7.3,15h-89.6l-16.2,33.4h89.7l-6.6,13.5L135,533.7l29.8,-61.7L314.2,318L210.1,318L239.5,256h448.2l-6.3,13L427.4,269l-23.6,48.9v0.1zM768.2,256c23.5,0 42.8,4.4 58.1,13h-122.9c20.5,-8.8 42.5,-13.2 64.9,-13L768.2,256zM673.5,605.2l-7.3,29.6h9.8c30.1,0 30.2,3.8 24.7,26.1l-6.6,26.5h9.5l-4.6,18.6h-39.7c4,12 12.6,29.2 28.9,48.1 -5.4,21.2 -5.6,22 -6.2,24.2 -21.6,-18.8 -31,-37.1 -42.2,-57 -14.2,29.2 -29.2,53.2 -64.8,56.8l2.2,-9.2c15.4,-12.1 29.5,-27.4 43.6,-62.9h-28.4l4.6,-18.6h29.2l8.3,-33.9h-29.7l4.5,-18.8 29.7,0.2 7.3,-29.5h27.2zM602.2,606l-10.8,43.5 4.9,-2.9s5.4,11.3 8,16.3c7,13.8 -4.5,20.7 -4.5,20.7l-11.3,6.5 -4.4,-10.8 -22.4,92 -0.7,3.1 -1,3.9h-25.1l42.1,-172.3h25.1zM258.5,605.8l-7.5,28.8h48.1c24.9,0 16.3,18.1 16.3,18.1l-12.5,48.1 -8.8,33.8L266.2,734.7l3.3,-13 0.4,-1.2 0.1,-0.3h-41.2l-14.8,57.4L186.4,777.7l14.8,-57.4h-41.5c-0.1,1 -0.9,2.8 -3.7,14.4L128,734.7l25.9,-99.9h69.5l7.4,-28.8h27.6zM372.6,673.9l-17.3,66.4c4.4,9.8 14.1,14.6 31.8,14.6l39.5,0.6h7.3c19.1,-0.2 48.9,-0.7 48.9,-0.7l-5.9,22.7 -97.8,-0.7a64.4,64.4 0,0 1,-25.5 -4.9,32.4 32.4,0 0,1 -14.2,-12.4l-28.7,17.9 7.1,-27.3 10.2,-10.3 15.4,-59.5h-7.5l6,-23.2h17.2s18.2,-1.8 13.4,16.9zM759.4,673.9l-17.3,66.4c4.5,9.8 14.2,14.6 31.9,14.6l39.5,0.6h7.4l12.4,-0.2 8.7,-0.1 27.8,-0.4 -5.8,22.7 -97.8,-0.7a64.8,64.8 0,0 1,-25.6 -4.9,32.4 32.4,0 0,1 -14.2,-12.4l-28.6,17.9 7.1,-27.3 10.1,-10.3 15.4,-59.5h-7.5l6.1,-23.2h17s18.2,-1.8 13.4,16.9zM521.4,606.2l-5.2,20.2 -41.6,20.3h20.6c17.5,0 11.6,16.4 11.6,16.4l-17.4,67.1c-5,19.6 -19.8,17.3 -19.8,17.3h-17.2l4.2,-16.3h5.1l4.1,-16.1h-18.2l-8.9,34.2h-27.3l8.9,-34.2h-19.6l-8.3,31.9h-27.2l25.9,-100.2h39.1l-18.9,-11.8 11.6,-10.4h-26l4.7,-18.4h119.8v0.1zM827.7,605.6l8.7,15.2h11l14.1,-15.3h25.6l-13.5,15.3h9.8s16,-1.9 11.9,14l-9.5,36.7h-44.2l-3.5,13.4h28.6s15.7,-0.2 11.4,16.2c-2.4,9.1 -5,19.6 -7.3,28.2 -4.3,16.6 -15.6,17.9 -17.4,18h-22.7l4.2,-16.3h7.9l7.2,-27.4h-16.8l-11.8,45.5h-27.3l7.3,-27.8 -49.2,24.5 5,-19.3 48.8,-22.8h-42.8l13.1,-50.7h42.8l3.5,-13.4h-42.8l4.8,-18.7h22.8l-8.4,-15.3h28.6zM559.9,644.6l-19.6,81.2h-24.9l20,-81.2h24.5zM472.7,688.7h-18.2l-2.8,10.8h18.3l2.8,-10.8zM427.1,688.7L407.6,688.7l-2.8,10.8h19.5l2.8,-10.8zM286.3,657.2h-41.2l-10.3,39.9h41.1l10.4,-39.9zM217.6,657.2h-41.6l-10.3,39.9h41.5l10.4,-39.9h0.1zM662,653.4l-8.5,34h16.6l8.2,-33.9h-16.3v-0.1zM814.3,671.6h-15.4l-3.6,13.4h15.5l3.5,-13.4zM433.9,662.4h-19.6l-2.8,10.8h19.6l2.8,-10.8zM479.5,662.4h-18.3l-2.8,10.8h18.3l2.8,-10.8zM866.7,639.5h-16.7l-3.6,13.4h16.9l3.5,-13.4zM759.8,606s5.5,11.2 8,16.2c7,13.8 -4.5,20.7 -4.5,20.7l-11.4,6.5 -13,-31.7 20.8,-11.8zM373,606s5.4,11.2 8,16.2c7,13.8 -4.5,20.7 -4.5,20.7l-11.3,6.5 -13,-31.7 20.8,-11.8zM486.4,624.4L429.4,624.4l24.8,15.8 32.3,-15.8z"
+      android:fillColor="#FFFFFF"/>
+</vector>
diff --git a/app/src/main/res/layout/activity_reminder_settings.xml b/app/src/main/res/layout/activity_reminder_settings.xml
index 5675196..8aa58dc 100644
--- a/app/src/main/res/layout/activity_reminder_settings.xml
+++ b/app/src/main/res/layout/activity_reminder_settings.xml
@@ -109,56 +109,56 @@
 
             </LinearLayout>
 
-            <LinearLayout
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_weight="1"
-                android:orientation="horizontal">
+<!--            <LinearLayout-->
+<!--                android:layout_width="0dp"-->
+<!--                android:layout_height="wrap_content"-->
+<!--                android:layout_weight="1"-->
+<!--                android:orientation="horizontal">-->
 
-                <CheckBox
-                    android:id="@+id/checkBoxFlight"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content" />
+<!--                <CheckBox-->
+<!--                    android:id="@+id/checkBoxFlight"-->
+<!--                    android:layout_width="wrap_content"-->
+<!--                    android:layout_height="wrap_content" />-->
 
-                <TextView
-                    android:layout_width="0dp"
-                    android:layout_height="wrap_content"
-                    android:layout_weight="1"
-                    android:text="航班"
-                    android:textColor="#000000"
-                    android:textSize="14sp" />
+<!--                <TextView-->
+<!--                    android:layout_width="0dp"-->
+<!--                    android:layout_height="wrap_content"-->
+<!--                    android:layout_weight="1"-->
+<!--                    android:text="航班"-->
+<!--                    android:textColor="#000000"-->
+<!--                    android:textSize="14sp" />-->
 
 
-            </LinearLayout>
+<!--            </LinearLayout>-->
         </LinearLayout>
 
         <!-- 第二行1个 -->
-        <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="8dp"
-            android:orientation="horizontal">
+<!--        <LinearLayout-->
+<!--            android:layout_width="match_parent"-->
+<!--            android:layout_height="wrap_content"-->
+<!--            android:layout_marginTop="8dp"-->
+<!--            android:orientation="horizontal">-->
 
-            <LinearLayout
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:orientation="horizontal">
+<!--            <LinearLayout-->
+<!--                android:layout_width="wrap_content"-->
+<!--                android:layout_height="wrap_content"-->
+<!--                android:orientation="horizontal">-->
 
-                <CheckBox
-                    android:id="@+id/checkBoxTrain"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content" />
+<!--                <CheckBox-->
+<!--                    android:id="@+id/checkBoxTrain"-->
+<!--                    android:layout_width="wrap_content"-->
+<!--                    android:layout_height="wrap_content" />-->
 
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:text="火车票"
-                    android:textColor="#000000"
-                    android:textSize="14sp" />
+<!--                <TextView-->
+<!--                    android:layout_width="wrap_content"-->
+<!--                    android:layout_height="wrap_content"-->
+<!--                    android:text="火车票"-->
+<!--                    android:textColor="#000000"-->
+<!--                    android:textSize="14sp" />-->
 
 
-            </LinearLayout>
-        </LinearLayout>
+<!--            </LinearLayout>-->
+<!--        </LinearLayout>-->
 
         <!-- 选择提醒方式部分 -->
         <LinearLayout
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index 7e24373..aa1b816 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -73,29 +73,29 @@
                         android:singleLine="true"
                         android:ellipsize="end" />
 
-                    <com.example.firstapp.view.UnderlineTextView
-                        android:id="@+id/tabFlight"
-                        android:layout_width="0dp"
-                        android:layout_height="match_parent"
-                        android:layout_weight="1"
-                        android:gravity="center"
-                        android:padding="4dp"
-                        android:text="航班"
-                        android:textSize="14sp"
-                        android:singleLine="true"
-                        android:ellipsize="end" />
+<!--                    <com.example.firstapp.view.UnderlineTextView-->
+<!--                        android:id="@+id/tabFlight"-->
+<!--                        android:layout_width="0dp"-->
+<!--                        android:layout_height="match_parent"-->
+<!--                        android:layout_weight="1"-->
+<!--                        android:gravity="center"-->
+<!--                        android:padding="4dp"-->
+<!--                        android:text="航班"-->
+<!--                        android:textSize="14sp"-->
+<!--                        android:singleLine="true"-->
+<!--                        android:ellipsize="end" />-->
 
-                    <com.example.firstapp.view.UnderlineTextView
-                        android:id="@+id/tabTrain"
-                        android:layout_width="0dp"
-                        android:layout_height="match_parent"
-                        android:layout_weight="1"
-                        android:gravity="center"
-                        android:padding="4dp"
-                        android:text="火车票"
-                        android:textSize="14sp"
-                        android:singleLine="true"
-                        android:ellipsize="end" />
+<!--                    <com.example.firstapp.view.UnderlineTextView-->
+<!--                        android:id="@+id/tabTrain"-->
+<!--                        android:layout_width="0dp"-->
+<!--                        android:layout_height="match_parent"-->
+<!--                        android:layout_weight="1"-->
+<!--                        android:gravity="center"-->
+<!--                        android:padding="4dp"-->
+<!--                        android:text="火车票"-->
+<!--                        android:textSize="14sp"-->
+<!--                        android:singleLine="true"-->
+<!--                        android:ellipsize="end" />-->
                 </LinearLayout>
 
                 <!-- 右侧图标区域 -->

--
Gitblit v1.9.3