我目前正在更改应用程序中的电子邮件。任务是打开一个电子邮件应用程序(如果有多个电子邮件应用可用,则显示选择器),一旦用户选择了一个应用程序,导航到EmailChangedChensive屏幕。
以下是相应的代码:
val launcher = rememberLauncherForActivityResult(
contract = ActivityResultContracts.StartActivityForResult(),
onResult = { result ->
Log.d("result", result.toString())
if (result.resultCode == Activity.RESULT_OK) onToStep(ChangeEmailStep.EmailChangedSuccessfully)
}
)
BasicButton(
text = stringResource(R.string.open_mail),
modifier = Modifier.padding(top = 12.dp),
onClick = {
val intent = Intent
.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_APP_EMAIL)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
launcher.launch(intent)
},
paddingValues = PaddingValues(10.dp)
)
问题是,一旦选择器打开,我就会看到记录的结果如下:
2025-01-31 21:31:41.469 12357-12357 result D ActivityResult{resultCode=RESULT_CANCELED, data=null}
我希望得到活动。用户选择应用程序时的RESULT_OK。我也试过这个
launcher.launch(Intent.createChooser(intent, "choose email app"))
当选择器出现时,我停止接收RESULT_CANCELLED,但当我回到我的应用程序时,我仍然收到RESULT_CANCELLED。我应该改变什么来实现预期的行为?
UPD:
我还应该提到,我的活动
android:launchMode="standard"