startActivityForResult已经失效
时间: 2024-01-09 18:43:28 浏览: 69
android webview input=file 失效解决方案
5星 · 资源好评率100%
是的,从 Android 11 开始,`startActivityForResult`已经被标记为过时 (deprecated),不再建议使用。这是因为 Android 11 引入了一种新的 Activity 启动方式,称为 `registerForActivityResult`,它提供了更好的类型安全和更简洁的 API。
`registerForActivityResult`方法使用起来非常简单,只需要在 Activity 或 Fragment 中注册一个回调来处理结果,然后启动一个 Activity。当 Activity 返回结果时,会自动调用回调方法来处理结果。以下是一个示例:
```java
// 在 Activity 或 Fragment 中注册回调
ActivityResultLauncher<String> launcher = registerForActivityResult(
new ActivityResultContracts.GetContent(),
new ActivityResultCallback<Uri>() {
@Override
public void onActivityResult(Uri uri) {
// 处理结果
}
});
// 启动 Activity
launcher.launch("image/*");
```
在这个例子中,我们使用 `ActivityResultContracts.GetContent()` 启动一个获取文件内容的 Activity,并在回调函数中处理返回的 URI。
总的来说,使用 `registerForActivityResult` 可以让代码更加简洁和类型安全,所以建议尽快升级到这个 API。
阅读全文