.idea/deploymentTargetSelector.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/example/firstapp/App.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/example/firstapp/adapter/ReminderAdapter.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/example/firstapp/database/AppDatabase.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/example/firstapp/database/dao/ReminderDao.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/example/firstapp/database/entity/Code.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/drawable/bg_button_primary.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/drawable/bg_edit_border.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/layout/fragment_reminder_settings.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/res/layout/item_reminder.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
.idea/deploymentTargetSelector.xml
@@ -4,7 +4,7 @@ <selectionStates> <SelectionState runConfigName="app"> <option name="selectionMode" value="DROPDOWN" /> <DropdownSelection timestamp="2025-02-14T05:55:28.808113500Z"> <DropdownSelection timestamp="2025-02-25T09:44:45.437232500Z"> <Target type="DEFAULT_BOOT"> <handle> <DeviceId pluginId="PhysicalDevice" identifier="serial=88Y5T19C14010323" /> app/src/main/java/com/example/firstapp/App.kt
@@ -3,10 +3,14 @@ import android.annotation.SuppressLint import android.app.Application import android.app.PendingIntent import android.bluetooth.BluetoothAdapter import android.bluetooth.BluetoothDevice import android.content.Context import android.content.Intent import android.content.IntentFilter import android.location.Geocoder import android.net.ConnectivityManager import android.net.wifi.WifiManager import android.os.Build import androidx.lifecycle.MutableLiveData import androidx.multidex.MultiDex @@ -16,26 +20,35 @@ import com.gyf.cactus.callback.CactusCallback import com.gyf.cactus.ext.cactus import com.hjq.language.MultiLanguages import com.hjq.language.OnLanguageListener import com.example.firstapp.core.Core import com.example.firstapp.database.repository.ReminderRepository import com.example.firstapp.database.repository.CodeRepository import com.example.firstapp.database.repository.KeywordRepository import com.example.firstapp.database.repository.MsgRepository import com.example.firstapp.database.repository.ReminderRepository import com.example.firstapp.database.service.RetrofitClient import com.example.firstapp.receiver.CactusReceiver import com.example.firstapp.service.BluetoothScanService import com.example.firstapp.service.HttpServerService import com.example.firstapp.utils.ACTION_START import com.example.firstapp.utils.AppInfo import com.example.firstapp.utils.CactusSave import com.example.firstapp.utils.FRONT_CHANNEL_ID import com.example.firstapp.utils.FRONT_CHANNEL_NAME import com.example.firstapp.utils.FRONT_NOTIFY_ID import com.example.firstapp.utils.FRPC_LIB_VERSION import com.example.firstapp.utils.HistoryUtils import com.example.firstapp.utils.Log import com.example.firstapp.utils.SettingUtils import com.example.firstapp.utils.SharedPreference import com.example.firstapp.utils.tinker.TinkerLoadLibrary import com.king.location.LocationClient import com.xuexiang.xutil.file.FileUtils import frpclib.Frpclib import io.reactivex.Observable import io.reactivex.disposables.Disposable import io.reactivex.schedulers.Schedulers import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.SupervisorJob import java.io.BufferedWriter @@ -45,6 +58,8 @@ import java.text.SimpleDateFormat import java.util.Date import java.util.Locale import java.util.TimeZone import java.util.concurrent.TimeUnit @Suppress("DEPRECATION") class App : Application(), CactusCallback, Configuration.Provider by Core { @@ -55,7 +70,6 @@ val codeRepository by lazy { CodeRepository(database.codeDao()) } val reminderRepository by lazy { ReminderRepository(database.reminderDao()) } val keywordRepository by lazy { KeywordRepository(RetrofitClient.apiService,database.keywordDao()) } companion object { const val TAG: String = "SmsForwarder" app/src/main/java/com/example/firstapp/adapter/ReminderAdapter.kt
@@ -15,7 +15,7 @@ fun bind(reminder: Reminder, onDelete: (Reminder) -> Unit) { binding.textNickname.text = reminder.nickname binding.textKeywords.text = reminder.keywords //binding.textKeywords.text = reminder.keywords binding.btnDelete.setOnClickListener { onDelete(reminder) } } } app/src/main/java/com/example/firstapp/database/AppDatabase.kt
@@ -1,6 +1,5 @@ package com.example.firstapp import android.content.Context import androidx.room.Database import androidx.room.Room app/src/main/java/com/example/firstapp/database/dao/ReminderDao.kt
@@ -1,4 +1,5 @@ package com.example.firstapp.database.dao import androidx.room.* import com.example.firstapp.database.entity.Reminder import kotlinx.coroutines.flow.Flow app/src/main/java/com/example/firstapp/database/entity/Code.kt
@@ -15,5 +15,7 @@ val msgId: Long, val code: String, var overtime: String, var name: String, var time: Date = Date(), ) app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt
@@ -84,7 +84,7 @@ // 转换为字符串 val overtime = futureTime.format(formatter) // 封装成一个Code对象,并保存在数据库中 val code = Code(0, rule.type,1, rule.content,1, 1, msgId, code, overtime) val code = Code(0, rule.type,1, rule.content,1, 1, msgId, code, overtime,"中通") Core.code.insert(code) Log.d("SMS_DEBUG", "新短信已保存到数据库") // 发送广播通知数据已更新 app/src/main/res/drawable/bg_button_primary.xml
对比新文件 @@ -0,0 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#666666"/> <corners android:radius="4dp"/> </shape> app/src/main/res/drawable/bg_edit_border.xml
对比新文件 @@ -0,0 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFFFFF"/> <stroke android:width="1dp" android:color="#E0E0E0"/> <corners android:radius="4dp"/> </shape> app/src/main/res/layout/fragment_reminder_settings.xml
@@ -2,21 +2,23 @@ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> android:orientation="vertical" android:background="#FAFAFA"> <!-- 标题栏 --> <RelativeLayout android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="#FFFFFF"> android:layout_height="56dp" android:background="#FFFFFF" android:elevation="1dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="新增短信提醒" android:textSize="18sp" android:textColor="#000000" /> android:textSize="17sp" android:textColor="#222222" /> <!-- 关闭按钮 --> <ImageButton @@ -26,63 +28,119 @@ android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:background="?attr/selectableItemBackgroundBorderless" android:padding="12dp" android:src="@android:drawable/ic_menu_close_clear_cancel" /> </RelativeLayout> <!-- 提醒类型选择 --> <Spinner android:id="@+id/spinner_type" <!-- 内容区域 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="16dp" android:padding="12dp" android:background="@android:drawable/btn_dropdown" /> android:orientation="vertical" android:padding="16dp"> <!-- 昵称输入框 --> <EditText android:id="@+id/edit_nickname" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="16dp" android:hint="昵称" android:padding="12dp" android:background="@android:drawable/edit_text" /> <!-- 提醒类型选择 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_marginBottom="16dp"> <!-- 关键词输入框 --> <EditText android:id="@+id/edit_keywords" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="16dp" android:hint="关键词" android:padding="12dp" android:background="@android:drawable/edit_text" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="选择新增类型 →" android:textColor="#666666" android:textSize="14sp" android:layout_marginBottom="8dp"/> <!-- 已添加列表标题 --> <Button android:id="@+id/btn_add_reminder" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="16dp" android:backgroundTint="#03A9F4" android:text="确定新增" android:textColor="#FFFFFF" /> <Spinner android:id="@+id/spinner_type" android:layout_width="match_parent" android:layout_height="48dp" android:background="@drawable/bg_edit_border" android:paddingHorizontal="12dp"/> </LinearLayout> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" android:text="已添加列表" android:textStyle="bold" /> <!-- 昵称输入框 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_marginBottom="16dp"> <!-- 已添加列表 --> <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler_reminders" android:layout_width="match_parent" android:layout_height="221dp" android:layout_weight="1" android:padding="8dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="昵称 →" android:textColor="#666666" android:textSize="14sp" android:layout_marginBottom="8dp"/> <!-- 确定新增按钮 --> <EditText android:id="@+id/edit_nickname" android:layout_width="match_parent" android:layout_height="48dp" android:background="@drawable/bg_edit_border" android:hint="仅用于显示与区分,可任意输入" android:textColorHint="#999999" android:textSize="14sp" android:paddingHorizontal="12dp"/> </LinearLayout> <!-- 关键词输入框 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_marginBottom="16dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="关键词 →" android:textColor="#666666" android:textSize="14sp" android:layout_marginBottom="8dp"/> <EditText android:id="@+id/edit_keywords" android:layout_width="match_parent" android:layout_height="48dp" android:background="@drawable/bg_edit_border" android:hint="用于匹配短信类型" android:textColorHint="#999999" android:textSize="14sp" android:paddingHorizontal="12dp"/> </LinearLayout> <!-- 确定新增按钮 --> <Button android:id="@+id/btn_add_reminder" android:layout_width="match_parent" android:layout_height="48dp" android:text="确定新增" android:textColor="#FFFFFF" android:textSize="16sp" android:background="@drawable/bg_button_primary" android:layout_marginTop="16dp"/> <!-- 已添加列表 --> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="已添加列表 →" android:textColor="#666666" android:textSize="14sp" android:layout_marginTop="24dp" android:layout_marginBottom="8dp"/> <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler_reminders" android:layout_width="match_parent" android:layout_height="160dp" android:layout_marginTop="2dp" /> </LinearLayout> </LinearLayout> app/src/main/res/layout/item_reminder.xml
@@ -2,12 +2,13 @@ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="12dp" android:padding="8dp" android:background="@android:color/white"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginEnd="0dp" android:layout_toStartOf="@id/btn_delete" android:orientation="vertical"> @@ -15,16 +16,16 @@ android:id="@+id/text_nickname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16sp" android:textColor="#000000" /> android:textColor="#000000" android:textSize="16sp" /> <TextView android:id="@+id/text_keywords" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="4dp" android:textSize="14sp" android:textColor="#666666" /> <!-- <TextView--> <!-- android:id="@+id/text_keywords"--> <!-- android:layout_width="wrap_content"--> <!-- android:layout_height="wrap_content"--> <!-- android:layout_marginTop="4dp"--> <!-- android:textColor="#666666"--> <!-- android:textSize="14sp" />--> </LinearLayout> <ImageButton