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


    }

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

相关推荐
路上^_^11 小时前
安卓基础组件023-SharedPerferences
android
恋猫de小郭11 小时前
Fluttercon EU 2025 :Let‘s go far with Flutter
android·开发语言·flutter·ios·golang
Andytoms15 小时前
Android geckoview 集成,JS交互,官方demo
android·javascript·交互
2501_9159090618 小时前
iOS 抓包工具有哪些?实战对比、场景分工与开发者排查流程
android·开发语言·ios·小程序·uni-app·php·iphone
锋风19 小时前
基于Binder的4种RPC调用
android
行墨20 小时前
CoordinatorLayout基本使用与分析—— Group 批量控制
android
行墨20 小时前
CoordinatorLayout基本使用与分析——水平偏移(Horizontal Bias)
android
私房菜21 小时前
Android dmabuf_dump 命令详解
android·libdmabufinfo·linmeminfo·dmabuf_dump
爱学啊21 小时前
1.Android Compose 基础系列:您的第一个 Kotlin 程序
android·kotlin·jetpack