首先引用图片选择库
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
}
点击选择相册的时候 可以写一个弹框(相机,相册)点击的时候用上面的方法即可