From e0f3b5be2a118e0b2d004d298a3e7a7c4d176bb6 Mon Sep 17 00:00:00 2001 From: Rosemoe <2073412493@qq.com> Date: Mon, 4 May 2026 14:08:56 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=90=9B=20fix:=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=B0=8F=E7=BB=84=E4=BB=B6=E5=88=B7=E6=96=B0=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/widget/android/src/main/AndroidManifest.xml | 1 - .../java/dev/tokenteam/iwut/widget/ScheduleWidget.kt | 11 ++++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/widget/android/src/main/AndroidManifest.xml b/modules/widget/android/src/main/AndroidManifest.xml index 6da85b5..eb8fcc9 100644 --- a/modules/widget/android/src/main/AndroidManifest.xml +++ b/modules/widget/android/src/main/AndroidManifest.xml @@ -1,5 +1,4 @@ - Date: Mon, 4 May 2026 14:10:14 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E2=9C=A8=20feat:=20=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E5=AE=89=E5=8D=93=E5=B0=8F=E7=BB=84=E4=BB=B6=E8=BF=9B=E5=85=A5?= =?UTF-8?q?=E5=BA=94=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tokenteam/iwut/widget/ScheduleWidget.kt | 31 ++++++++++++++++--- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/modules/widget/android/src/main/java/dev/tokenteam/iwut/widget/ScheduleWidget.kt b/modules/widget/android/src/main/java/dev/tokenteam/iwut/widget/ScheduleWidget.kt index bfd3896..d32b7ff 100644 --- a/modules/widget/android/src/main/java/dev/tokenteam/iwut/widget/ScheduleWidget.kt +++ b/modules/widget/android/src/main/java/dev/tokenteam/iwut/widget/ScheduleWidget.kt @@ -40,7 +40,8 @@ class ScheduleWidget : AppWidgetProvider() { const val ACTION_AUTO_REFRESH = "dev.tokenteam.iwut.widget.AUTO_REFRESH" // Do not use `0` for request code - const val REQUEST_CODE = 1234 + const val BROADCAST_REQUEST_CODE = 1234 + const val ACTIVITY_REQUEST_CODE = 1235 fun updateWidget( context: Context, @@ -53,6 +54,7 @@ class ScheduleWidget : AppWidgetProvider() { if (data == null || data.termStart.isEmpty()) { views.setViewVisibility(R.id.course_group, View.GONE) views.setViewVisibility(R.id.all_done_group, View.VISIBLE) + setOnClickAction(context, views) appWidgetManager.updateAppWidget(appWidgetId, views) return } @@ -81,7 +83,8 @@ class ScheduleWidget : AppWidgetProvider() { ScheduleData.parseTimeToMinutes(it.endTime) > nowMin } - val combined = (upcomingToday.map { it to true } + tomorrowCourses.map { it to false }).take(2) + val combined = + (upcomingToday.map { it to true } + tomorrowCourses.map { it to false }).take(2) if (combined.isEmpty()) { views.setViewVisibility(R.id.course_group, View.GONE) @@ -117,16 +120,34 @@ class ScheduleWidget : AppWidgetProvider() { if (upcomingToday.isEmpty() && tomorrowCourses.isEmpty()) { hintText = "今天和明天都没有课啦~" } else { - val todayHint = if (upcomingToday.isEmpty()) "今天没有课啦," else "今天还有${upcomingToday.size}节课," - val tomorrowHint = if (tomorrowCourses.isEmpty()) "明天没有课啦~" else "明天还有${tomorrowCourses.size}节课" + val todayHint = + if (upcomingToday.isEmpty()) "今天没有课啦," else "今天还有${upcomingToday.size}节课," + val tomorrowHint = + if (tomorrowCourses.isEmpty()) "明天没有课啦~" else "明天还有${tomorrowCourses.size}节课" hintText = todayHint + tomorrowHint } views.setViewVisibility(R.id.tv_course_hint, View.VISIBLE) views.setTextViewText(R.id.tv_course_hint, hintText) + setOnClickAction(context, views) appWidgetManager.updateAppWidget(appWidgetId, views) } + fun setOnClickAction(context: Context, views: RemoteViews) { + context.packageManager + .getLaunchIntentForPackage(context.packageName) + ?.let { + it.flags = Intent.FLAG_ACTIVITY_NEW_TASK + views.setOnClickPendingIntent( + R.id.widget_root, + PendingIntent.getActivity( + context, ACTIVITY_REQUEST_CODE, it, + PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_CANCEL_CURRENT + ) + ) + } + } + fun scheduleNextAlarm(context: Context) { val data = ScheduleData.load(context) ?: return if (data.termStart.isEmpty()) return @@ -153,7 +174,7 @@ class ScheduleWidget : AppWidgetProvider() { action = ACTION_AUTO_REFRESH } val pendingIntent = PendingIntent.getBroadcast( - context, REQUEST_CODE, intent, + context, BROADCAST_REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE )