onActivityResult并没有废弃,但是在Android 10及以上版本中,Google推荐使用ActivityResult API来替代旧的方式。
使用ActivityResult API需要引入Activity Result库,具体步骤如下:
1.在app的build.gradle中添加依赖:
dependencies { def activity_version = "1.3.0" implementation "androidx.activity:activity-ktx:$activity_version" implementation "androidx.fragment:fragment-ktx:$activity_version" }
2.使用registerForActivityResult()方法来注册需要处理的Activity result,并在回调中处理结果。
示例代码如下:
val someActivityResultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> if (result.resultCode == Activity.RESULT_OK) { //处理返回结果 } }
3.使用someActivityResultLauncher.launch(intent)启动需要处理结果的Activity。
示例代码如下:
val intent = Intent(this, SomeActivity::class.java) someActivityResultLauncher.launch(intent)
使用ActivityResult API相较于旧的方式更加简洁、可读性更高,并且能够处理更多的场景,如请求权限、打开文件等。因此,建议尽量采用ActivityResult API来处理Activity result。