Skip to content

Commit d78a909

Browse files
committed
Simplify and clean up widget preview publication logic in CanonicalLayoutActivity
1 parent 9b5a4c9 commit d78a909

1 file changed

Lines changed: 23 additions & 3 deletions

File tree

samples/user-interface/appwidgets/src/main/java/com/example/platform/ui/appwidgets/glance/layout/CanonicalLayoutActivity.kt

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,18 @@
1616

1717
package com.example.platform.ui.appwidgets.glance.layout
1818

19+
import android.appwidget.AppWidgetManager
1920
import android.content.Context
2021
import android.content.Intent
2122
import android.net.Uri
23+
import android.os.Build
2224
import android.os.Bundle
2325
import android.util.Log
2426
import androidx.activity.ComponentActivity
2527
import androidx.activity.compose.setContent
2628
import androidx.activity.enableEdgeToEdge
2729
import androidx.annotation.DrawableRes
30+
import androidx.annotation.RequiresApi
2831
import androidx.annotation.StringRes
2932
import androidx.compose.foundation.Image
3033
import androidx.compose.foundation.background
@@ -87,16 +90,33 @@ class CanonicalLayoutActivity : ComponentActivity() {
8790
}
8891
}
8992

93+
@RequiresApi(Build.VERSION_CODES.VANILLA_ICE_CREAM)
9094
override fun onCreate(savedInstanceState: Bundle?) {
9195
enableEdgeToEdge()
9296

9397
super.onCreate(savedInstanceState)
9498

95-
// Generate and publish the live preview for the widget picker
99+
// Publish Generated Widget Previews
96100
lifecycleScope.launch {
97101
try {
98-
val manager = GlanceAppWidgetManager(this@CanonicalLayoutActivity)
99-
manager.setWidgetPreviews(FullBleedImageAppWidgetReceiver::class)
102+
val context = this@CanonicalLayoutActivity
103+
val receiver = FullBleedImageAppWidgetReceiver::class.java
104+
val glanceAppWidgetManager = GlanceAppWidgetManager(context)
105+
val appWidgetManager = context.getSystemService(AppWidgetManager::class.java)
106+
107+
val providerInfo = appWidgetManager.installedProviders.firstOrNull {
108+
it.provider.className == receiver.name
109+
}
110+
111+
if (providerInfo?.generatedPreviewCategories == 0) {
112+
val result = glanceAppWidgetManager.setWidgetPreviews(FullBleedImageAppWidgetReceiver::class)
113+
val status = when (result) {
114+
GlanceAppWidgetManager.SET_WIDGET_PREVIEWS_RESULT_SUCCESS -> "Success"
115+
GlanceAppWidgetManager.SET_WIDGET_PREVIEWS_RESULT_RATE_LIMITED -> "Rate-Limited"
116+
else -> "Error ($result)"
117+
}
118+
Log.i("CanonicalLayoutActivity", "Published previews for ${receiver.simpleName}: $status")
119+
}
100120
} catch (e: Exception) {
101121
Log.e("CanonicalLayoutActivity", "Failed to set widget previews", e)
102122
}

0 commit comments

Comments
 (0)