android9之前,保存图片使用MediaScannerConnection,android10之后,则需要把文件复制到DCIM目录下,虽然android10的方法可以向下兼容,但复制文件效率始终不如刷新媒体库,所以最好是根据SDK_INT选择方法

kotlin写法

suspend fun File.scanFile(context: Context) = suspendCancellableCoroutine<Uri?>{cont->if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q){val uri =ContentValues().run {put(MediaStore.MediaColumns.DISPLAY_NAME,name)put(MediaStore.MediaColumns.MIME_TYPE, mimeType())put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DCIM)context.contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, this)}?.also {context.contentResolver.openOutputStream(it)?.let {val fis = this@scanFile.inputStream()FileUtils.copy(fis,it)fis.close()it.close()}}cont.resume(uri)}else{MediaScannerConnection.scanFile(context, arrayOf(path), arrayOf(mimeType())) { _, uri ->cont.resume(uri)}}
}fun File.mimeType() = URLConnection.getFileNameMap().getContentTypeFor(name)?:"multipart/form-data"

java写法

    //保存图片public static void scanFile(File file){String mimeType = getMimeType(file);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q){String fileName = file.getName();ContentValues values = new ContentValues();values.put(MediaStore.MediaColumns.DISPLAY_NAME,fileName);values.put(MediaStore.MediaColumns.MIME_TYPE, mimeType);values.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DCIM);ContentResolver contentResolver = context.getContentResolver();Uri uri = contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);if(uri == null){ToastUtils.showShort("图片保存失败");return;}try {OutputStream out = contentResolver.openOutputStream(uri);FileInputStream fis = new FileInputStream(file);FileUtils.copy(fis,out);fis.close();out.close();ToastUtils.showShort("图片保存成功");} catch (IOException e) {e.printStackTrace();}}else {MediaScannerConnection.scanFile(context, new String[]{file.getPath()}, new String[]{mimeType}, (path, uri) -> {ToastUtils.showShort("图片已成功保存到" + path);});}}public static String getMimeType(File file){FileNameMap fileNameMap = URLConnection.getFileNameMap();String type = fileNameMap.getContentTypeFor(file.getName());return type;}

android10 保存图片到系统相册,刷新媒体库相关推荐

  1. Android 删除图片后刷新媒体库

    有时候在App内删除了图片,调用图片选择器会看到删除了的图片还存在(显示不出来),这是由于图片被删除了,但是媒体库的记录还存在,没有同步刷新造成的,手机重启后媒体库会被刷新. 我们可以在删除文件后调用 ...

  2. Android保存图片到系统相册

    先说一下思路,我是这样做的,先保存一张图片到可写路径下,用cocos2d的节点截屏功能,保存之后就可以 保存Bitmap到本地指定路径下 ,然后通过广播,通知系统相册图库刷新数据. 先说如何节点截屏: ...

  3. 微信小程序保存图片到相册;uni-app小程序保存网络图片到相册;小程序保存图片到相册拒绝授权后重新拉起授权;保存图片到系统相册;小程序保存图片测试可以,真机保存图片失败

    文末代码可以直接复制使用,图片修改成你的图片路径即可 一.场景: 小程序点击按钮,保存项目内的静态图片或者微信头像或者后端返回的图片: 二.注意点及思路拆分: –2.1:小程序保存图片功能,必须要有s ...

  4. android 系统相册 多远,【系统相册】Android 保存图片到系统相册

    保存完图片后,可以在内存设备的文件系统相册目录下看到对应图片(以小米手机为例,系统相册的路径为:/storage/emulated/0/DCIM/Camera).但是,使用系统图库无法马上看到该图片, ...

  5. 直播视频app源码,保存图片到系统相册

    直播视频app源码,保存图片到系统相册相关的代码 public static void saveImageToGallery(Context context, Bitmap bmp) {// 首先保存 ...

  6. android 6.0获取图片地址,Android应用开发Android 保存图片到系统相册(三星6.0有效)...

    Android   保存图片到系统相册(三星6.0有效).今天要做一个保存图片到系统图库的功能,自身能力较浅,所以只能搜索了但发现网上的方法有几处bug,所以自己总结一下防止以后忘掉也想和大家分享一下 ...

  7. 微信小程序保存图片到系统相册

    function downloadImage(imageUrl) {   // 下载文件   wx.downloadFile({   url: imageUrl,   success: functio ...

  8. swift 将图片保存到本地_Swift - 保存图片到系统相册(相机胶卷),并获取存放路径、缩略图...

    (本文代码已升级至Swift3) 有时我们需要把图像(比如:从网络上获取的图片.程序自己生成的图片等)保存到系统相册(照片)中,通常有两种办法:一是使用 UIImageWriteToSavedPhot ...

  9. uniapp 微信小程序保存图片到系统相册(包括获取手机相册权限)即拿即用

    目录 1. 代码,即拿即用 2. 介绍使用到的方法 1. uni.getSetting 2. uni.authorize 3. uni.saveImageToPhotosAlbum 4. uni.op ...

最新文章

  1. vue 递归组件多级_Vue递归组件实现树形结构菜单
  2. excel 两组数据交点_30秒即可完成Excel数据对比,超高效率,快学起来不要犹豫!...
  3. 《大话数据结构》第3章 线性表 3.8.2 单链表的删除
  4. Java 8函数式编程:延迟实例化
  5. JavaScript 回调函数中的 return false 问题
  6. leetcode - 279. 完全平方数
  7. python中的列表理解_掌握『Python列表理解』需要知道的9件事,你知道了吗?
  8. vmtools 安装不上的方法 我这里介绍下vm14 Ubuntu的系统
  9. [转]js模块化(一)
  10. css环形进度条clip,clip实现圆环进度条
  11. 频率泄露以及加窗原理
  12. 文本框改变之onpropertychange事件
  13. K8S加入新的node节点
  14. 从中国近20年的发展历程看今年的就业困难
  15. 电脑使用android手机摄像头,电脑怎么使用安卓手机摄像头 电脑使用手机摄像头的方法...
  16. 微信公众号图灵机器人开发php,使用图灵api创建微信聊天机器人
  17. ubuntu qq音乐/网易云音乐 播放没有声音,播放mv有声音,解决办法
  18. mysql主从配置duxi_mysql主从配置
  19. 射频功放学习之数据关联——DAC元件的使用
  20. PyTorch学习笔记(1)nn.Sequential、nn.Conv2d、nn.BatchNorm2d、nn.ReLU和nn.MaxPool2d

热门文章

  1. 跟着阿杜拆书:《慢思考》
  2. can 自动波特率 linux,CAN波特率的简单计算
  3. 绩效管理能力:沟通技巧
  4. 世界500强企业名称中英对照(续)
  5. PCA and Whitening Exercise
  6. PR/AE/FCPX比较好用的插件有哪些?
  7. poco linux安装
  8. OpenCV4Android学习笔记一
  9. Scrapy 简易爬取Boss直聘 可设定city job 爬取工作到excel或mysql中
  10. mysql怎么删除表中字段的数据库表_Mysql 数据库 表 字段的创建 修改 删除