android中调用相册

首先引用图片选择库

java 复制代码
implementation 'io.github.lucksiege:pictureselector:v3.11.2'

调用相机

java 复制代码
PictureSelector.create((Activity) context)
                                    .openCamera(SelectMimeType.ofImage())
                                    .forResultActivity(MIntentAction.REQUEST_CODE_CAMERA);

调用系统相册

java 复制代码
PictureSelector.create((Activity) context)
                                    .openGallery(SelectMimeType.ofImage())
                                    .setImageEngine(GlideEngine.createGlideEngine())// 外部传入图片加载引擎,必传项
                                    .isMaxSelectEnabledMask(true)// 选择数到了最大阀值列表是否启用蒙层效果
                                    .setMaxSelectNum(maxPics)//最大选择数量
                                    .setSelectionMode(SelectModeConfig.MULTIPLE)
                                    .isPreviewImage(true)// 是否可预览图片
                                    .forResult(MIntentAction.REQUEST_CODE_IMG);

在Activity类中接收

java 复制代码
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (resultCode != Activity.RESULT_OK) {
            return
        }
        if (null == data) {
            return
        }
        if (requestCode == MIntentAction.REQUEST_CODE_IMG) {//图片

            val selectList = PictureSelector.obtainSelectorList(data)
            analyticalSelectResults(result = selectList)

            val list = ArrayList<String>()
            if (null != selectList) {
                for (item in selectList) {

                    if (item.path.contains("content://")) {

                        val cr = this.contentResolver
                        list.add(FileUtils.getFilePathFromContentUri(item.path.toUri(), cr))
                    } else {
                        list.add(item.path)
                        Log.i(">>图片", item.path)

                    }

                }
                //上传图片--这里自行需改--这里是上传到了oss上

                OssUpload.setOssMoreImg(this, "opinion", list) { photoUrl ->
                    runOnUiThread {
                        var path = photoUrl
                        val bugAttachment = GoodsImgBean(0, path, 0, false)
                        adapter!!.addData(adapter!!.data.size - 1, bugAttachment)
                        viewModel.nopath.add(path)
                    }


                }


            }

            return


        }

        if (requestCode == MIntentAction.REQUEST_CODE_CAMERA) {//拍照
            //拍照
            val selectList = PictureSelector.obtainSelectorList(data) ?: return
            analyticalSelectResults(result = selectList)
            val list = ArrayList<String>()
            if (selectList[0].path.contains("content://")) {

                val cr = this.contentResolver
                list.add(FileUtils.getFilePathFromContentUri(selectList[0].path.toUri(), cr))

            } else {
                list.add(selectList[0].path)
                Log.i(">>图片", selectList[0].path)

            }

          //上传图片--这里自行需改--这里是上传到了oss上
            OssUpload.setOssMoreImg(this, "opinion", list) { photoUrl ->
                runOnUiThread {
                    var path = photoUrl
                    val bugAttachment = GoodsImgBean(0, path, 0, false)
                    adapter!!.addData(adapter!!.data.size - 1, bugAttachment)
                    viewModel.nopath.add(path)
                }

            }

        }

        return


    }

点击选择相册的时候 可以写一个弹框(相机,相册)点击的时候用上面的方法即可

相关推荐
百锦再5 小时前
React编程高级主题:测试代码
android·前端·javascript·react.js·前端框架·reactjs
2501_916008896 小时前
全面介绍Fiddler、Wireshark、HttpWatch、SmartSniff和firebug抓包工具功能与使用
android·ios·小程序·https·uni-app·iphone·webview
玉梅小洋7 小时前
Windows 10 Android 构建配置指南
android·windows
Libraeking9 小时前
视觉篇:Canvas 自定义绘图与高级动画的华丽圆舞曲
android·经验分享·android jetpack
Fushize9 小时前
多模块架构下的依赖治理:如何避免 Gradle 依赖地狱
android·架构·kotlin
Jomurphys10 小时前
Kotlin - 类型别名 typealias
android·kotlin
Haha_bj10 小时前
Flutter ——flutter_screenutil 屏幕适配
android·ios
Haha_bj10 小时前
Flutter ——device_info_plus详解
android·flutter·ios
前端小伙计10 小时前
Android/Flutter 项目统一构建配置最佳实践
android·flutter
Mr_sun.12 小时前
Day09——入退管理-入住-2
android·java·开发语言