diff --git a/AppWidget/app/build.gradle b/AppWidget/app/build.gradle index 8c3a08254..b12433d8e 100644 --- a/AppWidget/app/build.gradle +++ b/AppWidget/app/build.gradle @@ -21,7 +21,7 @@ plugins { } android { - compileSdkVersion 33 + compileSdkVersion 34 defaultConfig { applicationId "com.example.android.appwidget" @@ -65,6 +65,9 @@ dependencies { def composeBom = platform('androidx.compose:compose-bom:2022.10.00') implementation(composeBom) + def kotlinBom = platform("org.jetbrains.kotlin:kotlin-bom:1.8.0") + implementation(kotlinBom) + implementation "org.jetbrains.kotlin:kotlin-stdlib:1.7.20" implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.3' @@ -77,7 +80,7 @@ dependencies { // For traditional RemoteViews implementation "androidx.core:core-remoteviews:1.0.0-beta03" // For building appwidgets with Glance - implementation "androidx.glance:glance-appwidget:1.0.0-alpha05" + implementation "androidx.glance:glance-appwidget:1.0.0" // To use Material3 theming for widgets implementation 'com.google.android.material:material:1.7.0' // Recommended to use WorkManager to load data for widgets diff --git a/AppWidget/app/src/main/java/com/example/android/appwidget/glance/buttons/ButtonsGlanceWidget.kt b/AppWidget/app/src/main/java/com/example/android/appwidget/glance/buttons/ButtonsGlanceWidget.kt index 2454c1c56..799e3f1b6 100644 --- a/AppWidget/app/src/main/java/com/example/android/appwidget/glance/buttons/ButtonsGlanceWidget.kt +++ b/AppWidget/app/src/main/java/com/example/android/appwidget/glance/buttons/ButtonsGlanceWidget.kt @@ -41,6 +41,7 @@ import androidx.glance.appwidget.action.ToggleableStateKey import androidx.glance.appwidget.action.actionRunCallback import androidx.glance.appwidget.appWidgetBackground import androidx.glance.appwidget.lazy.LazyColumn +import androidx.glance.appwidget.provideContent import androidx.glance.appwidget.state.updateAppWidgetState import androidx.glance.background import androidx.glance.currentState @@ -65,9 +66,15 @@ import com.example.android.appwidget.glance.appWidgetBackgroundCornerRadius */ class ButtonsGlanceWidget : GlanceAppWidget() { + override suspend fun provideGlance(context: Context, id: GlanceId) { + provideContent { + Content() + } + } + @SuppressLint("RemoteViewLayout") @Composable - override fun Content() { + private fun Content() { GlanceTheme { Column( modifier = GlanceModifier diff --git a/AppWidget/app/src/main/java/com/example/android/appwidget/glance/image/ImageGlanceWidget.kt b/AppWidget/app/src/main/java/com/example/android/appwidget/glance/image/ImageGlanceWidget.kt index bf680fceb..da1d07534 100644 --- a/AppWidget/app/src/main/java/com/example/android/appwidget/glance/image/ImageGlanceWidget.kt +++ b/AppWidget/app/src/main/java/com/example/android/appwidget/glance/image/ImageGlanceWidget.kt @@ -47,6 +47,7 @@ import androidx.glance.appwidget.action.ActionCallback import androidx.glance.appwidget.action.actionRunCallback import androidx.glance.appwidget.action.actionStartActivity import androidx.glance.appwidget.appWidgetBackground +import androidx.glance.appwidget.provideContent import androidx.glance.appwidget.state.updateAppWidgetState import androidx.glance.background import androidx.glance.currentState @@ -83,8 +84,14 @@ class ImageGlanceWidget : GlanceAppWidget() { override val sizeMode: SizeMode = SizeMode.Exact + override suspend fun provideGlance(context: Context, id: GlanceId) { + provideContent { + Content() + } + } + @Composable - override fun Content() { + private fun Content() { val context = LocalContext.current val size = LocalSize.current val imagePath = currentState(getImageKey(size)) diff --git a/AppWidget/app/src/main/java/com/example/android/appwidget/glance/list/ListGlanceWidget.kt b/AppWidget/app/src/main/java/com/example/android/appwidget/glance/list/ListGlanceWidget.kt index 54fb2e88d..5e4926355 100644 --- a/AppWidget/app/src/main/java/com/example/android/appwidget/glance/list/ListGlanceWidget.kt +++ b/AppWidget/app/src/main/java/com/example/android/appwidget/glance/list/ListGlanceWidget.kt @@ -34,6 +34,7 @@ import androidx.glance.appwidget.action.actionRunCallback import androidx.glance.appwidget.appWidgetBackground import androidx.glance.appwidget.lazy.LazyColumn import androidx.glance.appwidget.lazy.items +import androidx.glance.appwidget.provideContent import androidx.glance.appwidget.state.updateAppWidgetState import androidx.glance.layout.Column import androidx.glance.layout.fillMaxSize @@ -53,8 +54,14 @@ import com.example.android.appwidget.glance.appWidgetBackgroundCornerRadius */ class ListGlanceWidget : GlanceAppWidget() { + override suspend fun provideGlance(context: Context, id: GlanceId) { + provideContent { + Content() + } + } + @Composable - override fun Content() { + private fun Content() { GlanceTheme { Column( modifier = GlanceModifier diff --git a/AppWidget/app/src/main/java/com/example/android/appwidget/glance/weather/WeatherGlanceWidget.kt b/AppWidget/app/src/main/java/com/example/android/appwidget/glance/weather/WeatherGlanceWidget.kt index 657f4ce23..520fcca80 100644 --- a/AppWidget/app/src/main/java/com/example/android/appwidget/glance/weather/WeatherGlanceWidget.kt +++ b/AppWidget/app/src/main/java/com/example/android/appwidget/glance/weather/WeatherGlanceWidget.kt @@ -31,14 +31,17 @@ import androidx.glance.appwidget.action.ActionCallback import androidx.glance.appwidget.action.actionRunCallback import androidx.glance.appwidget.lazy.LazyColumn import androidx.glance.appwidget.lazy.items +import androidx.glance.appwidget.provideContent import androidx.glance.layout.* import androidx.glance.text.FontWeight import androidx.glance.text.Text import androidx.glance.text.TextAlign import androidx.glance.text.TextStyle import com.example.android.appwidget.glance.* +import com.example.android.appwidget.glance.GlanceTheme import java.util.* + class WeatherGlanceWidget : GlanceAppWidget() { companion object { @@ -57,12 +60,19 @@ class WeatherGlanceWidget : GlanceAppWidget() { setOf(thinMode, smallMode, mediumMode, largeMode) ) + override suspend fun provideGlance(context: Context, id: GlanceId) { + provideContent { + Content() + } + } + @Composable - override fun Content() { + private fun Content() { // Get the stored stated based on our custom state definition. val weatherInfo = currentState() // It will be one of the provided ones val size = LocalSize.current + GlanceTheme { when (weatherInfo) { WeatherInfo.Loading -> {