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,一经查实,立即删除!

相关文章

前端学习(2638):读懂代码之登录页login.vue之ref和rules

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

mongodb save和insert区别

mongodb的save和insert函数都可以向collection里插入数据&#xff0c;但两者是有两个区别&#xff1a; 一、使用save函数里&#xff0c;如果原来的对象不存在&#xff0c;那他们都可以向collection里插入数据&#xff0c;如果已经存在&#xff0c;save会调用update更新里面的记…

P1967 货车运输

P1967 货车运输最大生成树lca并查集 1 #include<iostream>2 #include<cstdio>3 #include<queue>4 #include<algorithm>5 #include<cmath>6 #include<ctime>7 #include<set>8 #include<map>9 #include<stack>10 #include…

前端学习(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 根据时间生成唯一订单号

一般做唯一编号的时候&#xff0c;可以使用guid或者uuid的包直接生成&#xff0c;但是我希望唯一编号能够反应生成的时间信息&#xff0c;所以就准备使用日期随机值来构造&#xff0c;代码如下&#xff1a; const tradeNo function () {const now new Date()const year now…

(转) 并发处理

1、使用事物 2、使用消息队列 可以基于例如MemcacheQ等这样的消息队列。 比如有100张票可供用户抢&#xff0c;那么就可以把这100张票放到缓存中&#xff0c;读写时不要加锁。 当并发量大的时候&#xff0c;可能有500人左右抢票成功&#xff0c;这样对于500后面的请求可以直接转…

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…

Android 自定义带图标Toast,工具方法,Toast自定义显示时间

带图标Toast工具方法1 public static void show(Context act, String strContent, int iResouce){try {Toast toast new Toast(act);View view LayoutInflater.from(act).inflate(R.layout.layout_dialog_toastok, null);TextView tvContent view.findViewById(R.id.content…

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;选择即可不使用任何代理。

glide工具类。加载显示原图片,显示圆角图片,gif图标显示

依赖 //支持gif 的控件 implementation pl.droidsonroids.gif:android-gif-drawable:1.2.1 工具方法 private void updateGifLoopOne(GifImageView gif) {try { // 3、动画启动说明 // a、场景GIF每换一次页面&#xff0c;重新动画一次&#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…