Android 仿微信多张图片选择器,适配android10系统,open failed: EACCES (Permission denied)

实现效果

 

 

只需引入模块,比起依赖,更方便自定义

implementation project(':imagepicker')
//图片加载
implementation 'com.github.bumptech.glide:glide:4.11.0'

初始化即可使用

private void initImagePicker() {ImagePicker imagePicker = ImagePicker.getInstance();imagePicker.setImageLoader(new GlideImageLoader());   //设置图片加载器imagePicker.setShowCamera(true);                      //显示拍照按钮imagePicker.setCrop(true);                           //允许裁剪(单选才有效)imagePicker.setSaveRectangle(true);                   //是否按矩形区域保存imagePicker.setSelectLimit(8);              //选中数量限制imagePicker.setStyle(CropImageView.Style.RECTANGLE);  //裁剪框的形状imagePicker.setFocusWidth(800);                       //裁剪框的宽度。单位像素(圆形自动取宽高最小值)imagePicker.setFocusHeight(800);                      //裁剪框的高度。单位像素(圆形自动取宽高最小值)imagePicker.setOutPutX(1000);                         //保存文件的宽度。单位像素imagePicker.setOutPutY(1000);                         //保存文件的高度。单位像素
}private void initre() {mRecyclerView.setLayoutManager(new GridLayoutManager(this, 4));evaluateAdapter = new EvaluateAdapter(this);mRecyclerView.setAdapter(evaluateAdapter);evaluateAdapter.setClickListener(new EvaluateAdapter.ClickListener() {@Overridepublic void add(int position) {Intent picture = new Intent(WxSelectPicActivity.this, ImageGridActivity.class);picture.putExtra(ImageGridActivity.EXTRAS_IMAGES, selectImage);startActivityForResult(picture, IMAGE_PICKER);}@Overridepublic void preview(int position) {Intent intentPreview = new Intent(WxSelectPicActivity.this, ImagePreviewDelActivity.class);intentPreview.putExtra(ImagePicker.EXTRA_IMAGE_ITEMS, (ArrayList<ImageItem>) evaluateAdapter.getData());intentPreview.putExtra(ImagePicker.EXTRA_SELECTED_IMAGE_POSITION, position);intentPreview.putExtra(ImagePicker.EXTRA_FROM_ITEMS, true);startActivityForResult(intentPreview, REQUEST_CODE_PREVIEW);}});
}

 

回调显示已选中图片

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (resultCode == ImagePicker.RESULT_CODE_ITEMS) {if (data != null && requestCode == IMAGE_PICKER) {ArrayList<ImageItem> images = (ArrayList<ImageItem>) data.getSerializableExtra(ImagePicker.EXTRA_RESULT_ITEMS);selectImage.clear();selectImage.addAll(images);evaluateAdapter.setNewData(images);}} else if (resultCode == ImagePicker.RESULT_CODE_BACK) {if (data != null && requestCode == REQUEST_CODE_PREVIEW) {ArrayList<ImageItem> images = (ArrayList<ImageItem>) data.getSerializableExtra(ImagePicker.EXTRA_IMAGE_ITEMS);selectImage.clear();selectImage.addAll(images);evaluateAdapter.setNewData(images);}}
}

已适配android10最新系统 

实现demo:https://download.csdn.net/download/meixi_android/13729710

 

open failed: EACCES (Permission denied) 

解决方法

application添加
android:requestLegacyExternalStorage="true"

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/415365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(2640):懂代码之登录页login.vue存入用户信息

<template><div class"login-wrap"><div class"ms-login"><div class"ms-title">后台管理系统</div><!--1定义参数类型 2定义路由规则 3使用ref去进行指向 --><el-form :model"param" :rules&…

js将字符串 YYMMDDHHmmss 转化为 date类型

微信支付的回调参数time_end为日期字符串。 需求&#xff1a;将20190523101156转化为转换为Date日期格式Thu May 23 2019 10:11:56 GMT0800 (中国标准时间) const str2date (dateString)> {const pattern /(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/;return new Dat…

This relative module was not found ./cptable webpack

在使用xlsx库的时候遇到的报错。 This relative module was not found: * ./cptable in ./node_modules/xlsx-style/dist/cpexcel.js记录解决方法&#xff0c;我是使用webpack进行配置的。 在chainWebpack里面增加一行代码&#xff0c;重新编译&#xff0c;即可。 config.ext…

工作155:首页样式调整第二次

<el-card><h1 style"float: left;margin-top: 34px;margin-left: 32px;">我的订单</h1><el-button size"mini" style"float: right;margin-top: 14px;margin-right: 10px;" type"primary" click"ListClick…

关于CaciiEZ端口流量阀值报警的设置

作者:邓聪聪 环境&#xff1a;CactiEZ v10.1 为了更高效的发现问题&#xff0c;在非工作期间&#xff0c;公司的网络可能会出现一些故障&#xff0c;为了及时解决问题&#xff0c;所以做了一个流量监控&#xff0c;并以邮件的方式发送流量异常的端口&#xff0c;以便及时了解状…

微信开发 getUserInfo:fail tunneling socket could not be established, cause=connect ECONNREFUSED

微信开发过程中&#xff0c;突然遇到一个奇怪的问题&#xff1a; 解决办法&#xff1a; 找到开发工具中 “工具 - 设置 - 代理设置”&#xff0c;选择即可不使用任何代理。

Socket常用语法与socketserver实例

1》Socket相关&#xff1a; 1>Socket Families(地址簇): socket.AF_UNIX   本机进程间通信 socket.AF_INET   IPV4  socket.AF_INET6   IPV6 2>Socket Types: socket.SOCK_STREAM   #for tcp socket.SOCK_DGRAM   #for udp  socket.SOCK_RAW …

重新记录一下微信后台的配置

1、打开开发的基本配置&#xff0c;成为开发者 2、启用开发者密码 3、看一下自己的公众号id 4、记录自己的AppID、AppSecret

vue2.0 如何自定义组件(vue组件的封装)

一、前言 之前的博客聊过 vue2.0和react的技术选型&#xff1b;聊过vue的axios封装和vuex使用。今天简单聊聊 vue 组件的封装。 vue 的ui框架现在是很多的&#xff0c;但是鉴于移动设备的复杂性&#xff0c;兼容性问题突出。像 Mint-UI 等说实话已经很不错了&#xff0c;但是坑…

又双叒叕 - 中国汉字的奇妙

四个字组成的汉字&#xff1a; 又双叒叕【zhuo】 屮艸芔茻【mǎng】 火炎焱燚【yi】 一二三亖【si】 土圭垚㙓【dui】 口吕品田【tian】 水沝淼㵘【man】 日昌晶【liu】 木林森【gua】 月朋朤【lang】 金鍂鑫鑫【繁体】【xin】

小程序 获取当前所在地理位置 城市 信息

需求&#xff1a;在小程序首页需要显示用户所在城市。 解决方案&#xff1a;使用wx.getLocation获取经纬度坐标&#xff0c;再使用微信小程序JavaScript SDK的地址逆解析方法reverseGeocoder&#xff0c;就可以完美搞定。 微信小程序JavaScript SDK官方地址 https://lbs.qq.c…

php用ajax方式实现四级联动

使用ajax方式实现了下简单的 四级联动&#xff0c; 数据库&#xff1a; 以下为前台代码&#xff1a; 1 <!DOCTYPE html>2 <html>3 <head>4 <title>5 四级联动6 </title>7 <meta charset"utf-8">8 <s…

OI回忆录——一个过气OIer的制杖历程

初中 初一参加学校信息学选修课&#xff0c;一周一节课&#xff0c;学pascal。  初一寒假&#xff08;大约是&#xff09;入选&#xff08;其实是钦定吧&#xff09;当时加上我只有3人的校队&#xff08;我当然是最弱的一个。  当时甚至有幸得到叉姐授课&#xff08;现在才…

工作157:动态路由

第一步 route里面加一个 第二步跳转

前端学习(2644):懂代码之header表头页之折叠功能

第一步 header.vue <!-- 折叠按钮 --><div class"collapse-btn" click"collapseChage"><i v-if"!collapse" class"el-icon-s-fold"></i><i v-else class"el-icon-s-unfold"></i></d…

简单使用CXF实现webserver(rs的独立发布)

简单使用cxf_rs的方式实现webserver 1创建maven project java项目 2,在maven文件中导入相关依赖 <dependencies>    <!--使用 CXF 的RS开发模式 --><dependency><groupId>org.apache.cxf</groupId><artifactId>cxf-rt-frontend-jaxrs&…

工作158:vue里面为什么要加key

没有key <div id"app"><div><input type"text" v-model"name"><button click"add">添加</button></div><ul><li v-for"(item, i) in list"><input type"checkbox&…

Android 人脸识别拍照demo

1、活体与照片。效果&#xff0c;捕获人脸 2、活体人脸识别&#xff1a;https://blog.csdn.net/meixi_android/article/details/88690445 运行效果&#xff1a; 自定义获取人脸view /*** 作者&#xff1a;created by meixi* 邮箱&#xff1a;13164716840163.com* 日期&#x…

多进程进阶

一 multiprocessing模块介绍 python中的多线程无法利用多核优势&#xff0c;如果想要充分地使用多核CPU的资源&#xff08;os.cpu_count()查看&#xff09;&#xff0c;在python中大部分情况需要使用多进程。Python提供了multiprocessing。 multiprocessing模块用来开启子进…