GlanceTileService无法向MainActivity传递ActionParameters问题求助
解决Wear OS Glance Tile按钮传参问题
问题原因
你使用的glance-wear-tiles:1.0.0-alpha05是早期测试版本,存在actionStartActivity传递ActionParameters到Intent的功能缺陷,导致参数无法正常传递到MainActivity。
解决方案
方案1:升级Glance依赖版本
将依赖升级到最新稳定版(当前为1.0.0),该版本已修复此传参问题:
implementation("androidx.glance:glance-wear-tiles:1.0.0")
升级后,你原有的ActionParameters传参代码即可正常工作,MainActivity能通过intent.extras?.getString("hello")获取到参数值。
方案2:直接构建带参数的Intent(兼容旧版本)
如果暂时无法升级依赖,可跳过ActionParameters,直接构建包含参数的Intent传递:
@ExperimentalComposeUiApi class FirstTile : GlanceTileService() { @Composable override fun Content() { Column( modifier = GlanceModifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, verticalAlignment = Alignment.Top ) { Row( modifier = GlanceModifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally ) { Button( modifier = GlanceModifier.size(58.dp), text = "Try me", onClick = actionStartActivity( Intent(this@FirstTile, MainActivity::class.java).apply { putExtra("hello", "android") } ) ) } } } }
MainActivity中的参数接收代码无需修改,依然可以通过intent.extras?.getString("hello")获取参数。
验证方法
运行项目后,点击Tile按钮,查看日志:
Check whole intent --> D #Intent;launchFlags0x10400000;component=com.example.test/.presentation.MainActivity;extra=hello:android;sourceBounds=134%20134%20250%20250;end Check hello --> D android
此时参数已成功传递。
内容的提问来源于stack exchange,提问作者user24695103
相关产品推荐
相关产品推荐

