📱

Jetpack Glanceでのtips

2024/08/07に公開

Jetpack Glanceで色々気をつけることがあるのでメモ

※最適解とは限らない

1.stringResourcesは使えない

@Composable
fun glanceString(@StringRes id: Int): String {
    return LocalContext.current.getString(id)
}
  1. backgroundに好きな色を指定できるわけではない

グラデーションやColor(0xFFffcce5)こういう色は反映されなかった

  1. widgetをタップしたらアプリを起動して欲しい

従来通りstartActivityでintentを渡してあげる

Intent(context, MainActivity::class.java).apply {
                                flags = FLAG_ACTIVITY_NEW_TASK
                                context.startActivity(this)
                            }
  1. Hiltはサポートされていない

暫定策としてApplicationクラスでRepositoryの具象化クラスを提供するServiceLocatorオブジェクトを用意する

@HiltAndroidApp
class App : Application() {
    val repository: Repository by lazy { RepositoryImpl(this) }
}
object ServiceLocator {
    fun provideRepository(context: Context): Repository {
        return (context.applicationContext as App).repository
    }
}
class Widget : GlanceAppWidget() {
    override suspend fun provideGlance(context: Context, id: GlanceId) {
        provideContent {
            val repository = ServiceLocator.provideRepository(context)
        }       
     }

Discussion