Sca*_*eer 5 android android-intent android-jetpack-compose
所以我正在尝试启动这个意图Intent.ACTION_OPEN_DOCUMENT。我第一次尝试,startActivityForResult但我注意到它已经贬值了,所以我试图找到另一种方法来做到这一点。所以我找到了该registerForActivityResult方法,但事实证明它必须在 onCreate() 完成后运行:
注意:虽然在创建片段或活动之前调用 registerForActivityResult() 是安全的,但在片段或活动的生命周期达到 CREATED 之前,您无法启动 ActivityResultLauncher。
由于我使用的是 Jetpack Compose 并且 setContent 位于 onCreate() 中,所以我的 Activity 实际上从未完成创建,因为我所有的可组合项函数都在 MainActivity 的 setContent 中运行
那么我怎样才能做到这一点呢?
Gab*_*tti 13
使用最新版本的 Activity-compose,您可以用来rememberLauncherForActivityResult()注册对Activity#startActivityForResult.
就像是:
val result = remember { mutableStateOf<Uri?>(null) }
val launcher = rememberLauncherForActivityResult(ActivityResultContracts.OpenDocument()) {
result.value = it
}
Button(onClick = { launcher.launch(arrayOf("application/pdf")) }) {
Text(text = "Open Document")
}
result.value?.let {
//...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4126 次 |
| 最近记录: |