From 3466799c94227c5ebba9fb201621e745058867ee Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期二, 15 四月 2025 13:18:34 +0800 Subject: [PATCH] add: 消息提醒时间设定;会员到期时间调整; --- app/src/main/java/com/example/firstapp/App.kt | 113 +++++++++++++++++++++++++++++++++----------------------- 1 files changed, 67 insertions(+), 46 deletions(-) diff --git a/app/src/main/java/com/example/firstapp/App.kt b/app/src/main/java/com/example/firstapp/App.kt index 4e0a37b..1a0b34c 100644 --- a/app/src/main/java/com/example/firstapp/App.kt +++ b/app/src/main/java/com/example/firstapp/App.kt @@ -8,30 +8,23 @@ import android.content.IntentFilter import android.location.Geocoder 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 androidx.work.* 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.service.RetrofitClient import com.example.firstapp.receiver.CactusReceiver -import com.example.firstapp.utils.AppInfo -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.Log -import com.example.firstapp.utils.SettingUtils - +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 @@ -43,19 +36,17 @@ import java.io.FileWriter import java.io.IOException import java.text.SimpleDateFormat -import java.util.Date -import java.util.Locale +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 reminderRepository by lazy { ReminderRepository(database.reminderDao()) } val keywordRepository by lazy { KeywordRepository(RetrofitClient.apiService,database.keywordDao()) } - companion object { const val TAG: String = "SmsForwarder" @@ -133,19 +124,27 @@ } catch (ex: IOException) { ex.printStackTrace() } - //使用默认的处理方式让APP停止运行 defaultHandler?.uncaughtException(thread, throwable) } try { context = applicationContext initLibs() + PreferencesManager.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" @@ -281,6 +280,13 @@ } } + @NonNull + override fun getWorkManagerConfiguration(): Configuration { + return Configuration.Builder() + .setMinimumLoggingLevel(android.util.Log.DEBUG) + .build() + } + /** * 初始化基础库 */ @@ -288,39 +294,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") @@ -443,4 +449,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