onActivityResult 标记为已过时
onActivityResult 虽然标记为已过时 不过暂时还可以使用
/* onActivityResult 已经标记为已过时 点击super.onActivityResult查看源码,可以看见官方已经给了新的使用替换方式 使用registerForActivityResult 方法 注意是一个final方法 返回ActivityResultLauncher类型 初始化为一个常量使用,注意没法直接区分请求类型 我们可以使用一个ActivityResultLauncher常量就对应一个类型的请求 比如我这里 图库选择回调、拍照回调、系统裁剪回调 定义三个 ActivityResultLauncher 常量 分别对三种回调的处理 调用ActivityResultLauncher.launch(intent) */ // override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { // super.onActivityResult(requestCode, resultCode, data) // MyLog.d(TAG, "onActivityResult $requestCode $resultCode $data") // when (resultCode) { // Activity.RESULT_OK -> when (requestCode) { // CameraStatus.CAMERA_REQUEST_CODE -> { // // 拍照回调 // startPhotoZoom(photoUri, 300, true) // } // CameraStatus.GALLERY_REQUEST_CODE -> { // MyLog.d(TAG, "相册回调 data=${data} c=${data?.data} action=${data?.action}") // if (data?.data != null) { // startPhotoZoom(data.data!!, 300, false) // } else { // Toast.makeText(context, "选择的图片可能有问题,换一张图片试试", Toast.LENGTH_SHORT).show() // } // } // CameraStatus.CROP_REQUEST_CODE -> { // MyLog.d(TAG, "裁剪回调 data=${data} c=${data?.data} action=${data?.action}") // if (data?.data != null) { // upPic(data.data) // } else { // upPic(photoCropUri) // } // } // } // Activity.RESULT_CANCELED -> { // Toast.makeText(context, "您取消了操作", Toast.LENGTH_SHORT).show() // findNavController().popBackStack() // } // else -> { // Toast.makeText(context, "回调异常", Toast.LENGTH_SHORT).show() // findNavController().popBackStack() // } // } // }
使用 registerForActivityResult 处理activity返回回调
/** * 2022-03-30 15:48 * 选择相册(图库)回调 */ private val galleryRegisterActivity = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { MyLog.d(TAG, "registerForActivityResult:${it.resultCode} ${it.data}") if (it.resultCode == Activity.RESULT_OK) { MyLog.d(TAG, "相册回调 data=${it} c=${it.data}") if (it.data?.data != null) { startPhotoZoom(it.data?.data, 300, false) } else { Toast.makeText(context, "选择的图片可能有问题,换一张图片试试", Toast.LENGTH_SHORT).show() } } } /** * 2022-03-30 15:54 * 拍照回调 */ private val cameraRegisterActivity = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { MyLog.d(TAG, "拍照回调:${it.resultCode} ${it.data?.data}") if (it.resultCode == Activity.RESULT_OK) { if (it.data?.data != null) { startPhotoZoom(it.data?.data, 300, true) } else { startPhotoZoom(photoUri, 300, true) } } }
调用相册
val intent = Intent(Intent.ACTION_PICK) //val intent = Intent(Intent.ACTION_GET_CONTENT)//intent隐式调用启动相册界面 // intent.type = "image/*"//设置数据类型 intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*") if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION) } // startActivityForResult(intent, CameraStatus.GALLERY_REQUEST_CODE) // 上面的方法过时了,使用替代方法 galleryRegisterActivity.launch(intent)
分类:
android
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!