From a371213d4a9d7b75c7803dcb982ab66f646f45b1 Mon Sep 17 00:00:00 2001 From: Thunder <70254851+thunder04@users.noreply.github.com> Date: Sat, 8 Feb 2025 13:49:49 +0200 Subject: [PATCH] Fix crash after tapping "Configure widget" in Settings (#1242) * Fix crash after tapping "Configure widget" in Settings > Home screen > Clock Closes #1221 * Fix another crash --------- Co-authored-by: MM20 <15646950+MM2-0@users.noreply.github.com> --- .../launcher/sheets/ConfigureWidgetSheet.kt | 3 --- .../widgets/clock/WatchFaceSelector.kt | 20 +++++++++++++++---- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/ConfigureWidgetSheet.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/ConfigureWidgetSheet.kt index 3aa75eb7..3920d0ed 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/ConfigureWidgetSheet.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/sheets/ConfigureWidgetSheet.kt @@ -478,9 +478,6 @@ fun ColumnScope.ConfigureAppWidget( .setPendingIntentBackgroundActivityStartMode( ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED ) - .setPendingIntentCreatorBackgroundActivityStartMode( - ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED - ) .toBundle() } ) diff --git a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/WatchFaceSelector.kt b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/WatchFaceSelector.kt index 6bcd2f68..6d483211 100644 --- a/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/WatchFaceSelector.kt +++ b/app/ui/src/main/java/de/mm20/launcher2/ui/launcher/widgets/clock/WatchFaceSelector.kt @@ -4,6 +4,7 @@ import android.app.Activity import android.app.ActivityOptions import android.appwidget.AppWidgetManager import android.content.Context +import android.content.ContextWrapper import android.os.Build import androidx.compose.animation.AnimatedContent import androidx.compose.animation.animateContentSize @@ -210,7 +211,7 @@ fun WatchFaceSelector( }, onClick = { appWidgetHost.startAppWidgetConfigureActivityForResult( - context as Activity, + getActivityFromContext(context) ?: return@DropdownMenuItem, selected.widgetId ?: return@DropdownMenuItem, 0, 0, @@ -221,9 +222,6 @@ fun WatchFaceSelector( .setPendingIntentBackgroundActivityStartMode( ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED ) - .setPendingIntentCreatorBackgroundActivityStartMode( - ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOWED - ) .toBundle() } ) @@ -588,4 +586,18 @@ private fun ResizeCustomWidget( } } } +} + +private fun getActivityFromContext(context: Context): Activity? { + var activity = context + + while (activity is ContextWrapper) { + if (activity is Activity) { + return activity + } + + activity = activity.baseContext + } + + return null } \ No newline at end of file