Jetpack Compose中从Gmail返回时如何触发onResult?
解决Jetpack Compose中打开Gmail返回后onResult不触发的问题
你遇到的问题核心是添加了Intent.FLAG_ACTIVITY_NEW_TASK标记。这个标记会让Gmail应用在独立的任务栈中启动,当你的应用跳转到Gmail时,系统会认为当前Activity的任务已完成,立刻回调onResult并返回resultCode 0。而从Gmail返回时,虽然回到了你的应用,但之前的启动器已经完成回调流程,不会再次触发。
解决方案
直接移除Intent.FLAG_ACTIVITY_NEW_TASK标记即可,这样Gmail会在当前应用的任务栈中启动,从Gmail返回时就能正常触发onResult回调。如果需要强制打开Gmail而非其他邮件应用,还可以指定Gmail的包名。
修正后的代码
启动器部分(无需修改)
val gmailAppLauncher = rememberLauncherForActivityResult( contract = ActivityResultContracts.StartActivityForResult(), onResult = { result -> Log.d(TAG, "code: ${result.resultCode}") // 在这里执行返回后的特定逻辑 } )
按钮点击事件代码
onClick = { val intent = Intent(Intent.ACTION_MAIN).apply { addCategory(Intent.CATEGORY_APP_EMAIL) // 移除FLAG_ACTIVITY_NEW_TASK标记 } // 可选:指定Gmail包名,强制打开Gmail intent.setPackage("com.google.android.gm") gmailAppLauncher.launch(intent) }
内容的提问来源于stack exchange,提问作者Always Learner
相关产品推荐
相关产品推荐

