在Android 10及以上版本中,需要使用registerForActivityResult()方法来代替startActivityForResult()方法来处理Activity结果。registerForActivityResult()方法更为灵活,可以在Activity或Fragment中注册Activity结果。以下是一个示例代码:
// 1.创建ActivityResultLauncher
ActivityResultLauncher mGetContent = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
result -> {
// 处理结果
if (result.getResultCode() == Activity.RESULT_OK) {
Intent intent = result.getData();
// 处理intent
}
});
// 2.启动Activity
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
mGetContent.launch(intent);
在启动Activity之前,先创建ActivityResultLauncher对象,然后使用registerForActivityResult()方法注册。当Activity结果返回时,在onActivityResult()方法中处理结果即可。 注意:通过registerForActivityResult()方法注册的ActivityResultLauncher对象不能在onCreate()方法中被调用,必须在Activity或者Fragment的生命周期方法中调用。