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


    }

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

相关推荐
漏刻有时4 小时前
PHP GeoJSON转PNG地图渲染程序开发笔记、源码解读、问题复盘与整改方案
android·笔记·php
-SOLO-5 小时前
解决VMware 显示比例被重置的问题
android
alexhilton6 小时前
探究Android Views、Flutter和Compose如何渲染你的UI
android·kotlin·android jetpack
Lesile9 小时前
Android:Hilt框架入门 · 在ViewUI和ComposeUI下的应用
android·android jetpack
用户423816229079 小时前
Android 16 WebView 页面顶部挖孔/通知栏不能显示UI问题排查
android
weixin_7275356210 小时前
Loop 已死,Graph 新生:AI 工作流的范式革命
android·人工智能·rxjava
严同学正在努力11 小时前
从备份到恢复:我用 30 分钟恢复了误删的核心业务表
android·java·数据库·ai
梦想三三11 小时前
LangChain Output Parser 实战:从字符串到结构化数据的完整指南
android·服务器·langchain·github·uv
爱笑鱼13 小时前
Binder(八):远端进程死了,BinderProxy 为什么还能收到通知?
android
Android-Flutter14 小时前
Kotlin 冷流与热流详解
android·kotlin