提示:ActivityResultLauncher必须在onCreate或者onAttach方法下初始化
一、ActivityResultContract
示例:由android提供的一些标准活动调用契约的集合。
- StartActivityForResult 使用Intent在activity(fragment)间通信,返回ActivityResult
- StartIntentSenderForResult 使用IntentSenderRequest. builder构造,可以返回带有activity的ActivityResult
- RequestMultiplePermissions 获取多个动态权限,成功后返回boolean数组
- RequestPermission 获取单个动态权限,成功后返回true
- TakePicturePreview 调用相机,拍照后返回bitmap图片信息
- TakePicture 调用相机,拍照后将图片保存到开发者指定的Uri,返回true
- TakeVideo 拍摄视频,将拍摄内容保存到开发者指定的Uri,返回缩略图
- CaptureVideo 拍摄视频,将内容保存到开发者指定的Uri后,返回true
- PickContact 弹出手机联系人列表,用户选中其中一个后,返回Uri
- GetContent 访问原始数据,返回Uri,例如相册中的单个图片
- GetMultipleContents 功能如上,返回Uri数组,例如相册中的多个图片
- OpenDocument 访问文件数据,打开文件夹,返回单个文件的Uri
- OpenMultipleDocuments 功能如上,返回多个文件的Uri
- OpenDocumentTree
- CreateDocument
二、使用步骤
1.初始化
代码如下(示例):
ActivityResultLauncher<Intent> activityResultLauncher;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 在onCreate或onAttach中完成初始化
activityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
// 返回处理
});
}
2.启动
代码如下(示例):
activityResultLauncher.launch(Intent intent);