From 88cf855268a05a68bb4570c6d45841bbe23fe5ec Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期五, 25 四月 2025 13:44:26 +0800
Subject: [PATCH] 短信
---
app/src/main/java/com/example/firstapp/App.kt | 127 +++++++++++++++++++++++-------------------
1 files changed, 70 insertions(+), 57 deletions(-)
diff --git a/app/src/main/java/com/example/firstapp/App.kt b/app/src/main/java/com/example/firstapp/App.kt
index f46c3a9..624d23e 100644
--- a/app/src/main/java/com/example/firstapp/App.kt
+++ b/app/src/main/java/com/example/firstapp/App.kt
@@ -3,51 +3,33 @@
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.annotation.NonNull
import androidx.lifecycle.MutableLiveData
import androidx.multidex.MultiDex
-import androidx.work.Configuration
-import androidx.work.WorkManager
-import com.gyf.cactus.Cactus
-import com.gyf.cactus.callback.CactusCallback
-import com.gyf.cactus.ext.cactus
-import com.hjq.language.MultiLanguages
-import com.hjq.language.OnLanguageListener
+import androidx.work.*
import com.example.firstapp.core.Core
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.service.ReminderWorker
+import com.example.firstapp.utils.*
import com.example.firstapp.utils.tinker.TinkerLoadLibrary
+import com.gyf.cactus.Cactus
+import com.gyf.cactus.callback.CactusCallback
+import com.gyf.cactus.ext.cactus
+import com.hjq.language.MultiLanguages
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
@@ -55,19 +37,18 @@
import java.io.FileWriter
import java.io.IOException
import java.text.SimpleDateFormat
-import java.util.Date
-import java.util.Locale
-import java.util.TimeZone
+import java.util.*
import java.util.concurrent.TimeUnit
@Suppress("DEPRECATION")
-class App : Application(), CactusCallback, Configuration.Provider by Core {
+class App : Application(), CactusCallback, Configuration.Provider {
val applicationScope = CoroutineScope(SupervisorJob())
val database by lazy { AppDatabase.getInstance(this) }
val msgRepository by lazy { MsgRepository(database.msgDao()) }
val codeRepository by lazy { CodeRepository(database.codeDao()) }
val keywordRepository by lazy { KeywordRepository(RetrofitClient.apiService,database.keywordDao()) }
+ val reminderRepository by lazy { ReminderRepository(this) }
companion object {
const val TAG: String = "SmsForwarder"
@@ -145,19 +126,29 @@
} catch (ex: IOException) {
ex.printStackTrace()
}
- //使用默认的处理方式让APP停止运行
defaultHandler?.uncaughtException(thread, throwable)
}
try {
context = applicationContext
initLibs()
+ PreferencesManager.init(this)
+ // 初始化RetrofitClient
+ RetrofitClient.init(this)
- //纯客户端模式
- if (SettingUtils.enablePureClientMode) return
+ try {
+ if (SettingUtils.enablePureClientMode) return
+ } catch (e: Exception) {
+ // 捕获SettingUtils未初始化的异常
+ Log.e(TAG, "SettingUtils未初始化: ${e.message}")
+ // 继续执行后续代码,不返回
+ }
- //初始化WorkManager
- WorkManager.initialize(this, Configuration.Builder().build())
+ // 初始化WorkManager
+ WorkManager.initialize(this, getWorkManagerConfiguration())
+
+ // 设置定时检查提醒的WorkManager
+ setupReminderWorker()
//动态加载FrpcLib
val libPath = filesDir.absolutePath + "/libs"
@@ -293,6 +284,13 @@
}
}
+ @NonNull
+ override fun getWorkManagerConfiguration(): Configuration {
+ return Configuration.Builder()
+ .setMinimumLoggingLevel(android.util.Log.DEBUG)
+ .build()
+ }
+
/**
* 初始化基础库
*/
@@ -300,39 +298,39 @@
Core.init(this)
Log.init(applicationContext)
// 配置文件初始化
- /* SharedPreference.init(applicationContext)
+ SharedPreference.init(applicationContext)
// X系列基础库初始化
// XBasicLibInit.init(this)
// 初始化日志打印
isDebug = SettingUtils.enableDebugMode
Log.init(applicationContext)
// 转发历史工具类初始化
- HistoryUtils.init(applicationContext)
+// HistoryUtils.init(applicationContext)
// 版本更新初始化
// XUpdateInit.init(this)
// 运营统计数据
// UMengInit.init(this)
// 初始化语种切换框架
- MultiLanguages.init(this)
+// MultiLanguages.init(this)
// 设置语种变化监听器
- MultiLanguages.setOnLanguageListener(object : OnLanguageListener {
- override fun onAppLocaleChange(oldLocale: Locale, newLocale: Locale) {
- // 注意:只有setAppLanguage时触发,clearAppLanguage时不触发
- Log.i(TAG, "监听到应用切换了语种,旧语种:$oldLocale,新语种:$newLocale")
- switchLanguage(newLocale)
- }
-
- override fun onSystemLocaleChange(oldLocale: Locale, newLocale: Locale) {
- Log.i(TAG, "监听到系统切换了语种,旧语种:$oldLocale,新语种:$newLocale")
- switchLanguage(newLocale)
- *//*val isFlowSystem = SettingUtils.isFlowSystemLanguage //MultiLanguages.isSystemLanguage(context)取值不对,一直是false
- Log.i(TAG, "监听到系统切换了语种,旧语种:$oldLocale,新语种:$newLocale,是否跟随系统:$isFlowSystem")
- if (isFlowSystem) {
- CommonUtils.switchLanguage(oldLocale, newLocale)
- }*//*
- }
- })
- switchLanguage(MultiLanguages.getAppLanguage(this))*/
+// MultiLanguages.setOnLanguageListener(object : OnLanguageListener {
+// override fun onAppLocaleChange(oldLocale: Locale, newLocale: Locale) {
+// // 注意:只有setAppLanguage时触发,clearAppLanguage时不触发
+// Log.i(TAG, "监听到应用切换了语种,旧语种:$oldLocale,新语种:$newLocale")
+// switchLanguage(newLocale)
+// }
+//
+// override fun onSystemLocaleChange(oldLocale: Locale, newLocale: Locale) {
+// Log.i(TAG, "监听到系统切换了语种,旧语种:$oldLocale,新语种:$newLocale")
+// switchLanguage(newLocale)
+// *//*val isFlowSystem = SettingUtils.isFlowSystemLanguage //MultiLanguages.isSystemLanguage(context)取值不对,一直是false
+// Log.i(TAG, "监听到系统切换了语种,旧语种:$oldLocale,新语种:$newLocale,是否跟随系统:$isFlowSystem")
+// if (isFlowSystem) {
+// CommonUtils.switchLanguage(oldLocale, newLocale)
+// }*//*
+// }
+// })
+// switchLanguage(MultiLanguages.getAppLanguage(this))
}
@SuppressLint("CheckResult")
@@ -455,4 +453,19 @@
// )
// }
+ /**
+ * 设置定时提醒Worker
+ * 配置为每天运行一次检查是否有新的提醒内容
+ */
+ fun setupReminderWorker() {
+ Log.d(TAG, "设置定时提醒Worker")
+
+ // 仅在特定时间执行(每天指定时间)
+ // 可根据需要设置多个不同时间点的提醒
+ ReminderWorker.setupScheduledWorker(this, 9, 0) // 上午9:00
+ ReminderWorker.setupScheduledWorker(this, 13, 50) // 下午13:50
+
+ // 不再使用周期性轮询和立即执行的方式
+ }
+
}
\ No newline at end of file
--
Gitblit v1.9.3