栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android:Environment.getExternalStorageDirectory 废弃

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android:Environment.getExternalStorageDirectory 废弃

使用Android SDK 版本超过29编译会发现这个方法被废弃了,解决方案是:

context.getExternalFilesDir()

-----------

比如要把图片保存到手机的指定文件夹下后,扫描更新媒体库,在相册中显示,存储路径的旧写法:

 //app调用系统相机拍照得到的照片存储的路径: /storage/emulated/0/Pictures/demox_camera

    private val outputPhotoDirectory: String by lazy {
        //路径不用根据版本区分,都一样
        "${Environment.getExternalStorageDirectory().absolutePath}/" +
                "${Environment.DIRECTORY_PICTURES}/demox_camera/"
    }

旧写法直接把照片存在了公共目录的Pictures/demox_camera下,当app卸载后,这个公共路径的文件夹不能随着卸载而删除,脏数据的留下是这个旧写法废弃的原因。

如果用了解决方案的写法:

  //app调用系统相机拍照得到的照片存储的路径: /storage/emulated/0/Android/data/com.change.demox/files/Pictures/demox_camera
    private val outputPhotoDirectory =
        //路径不用根据版本区分,都一样
       MyApplication.instance?.context?.getExternalFilesDir(Environment.DIRECTORY_PICTURES)?.absolutePath+"/demox_camera/"

解决方案的写法直接把照片文件存在了私有存储目录的Pictures/demox_camera下,如此文件夹便能随APP卸载而删除,不留脏数据,在相册中依然能成功看到图片文件,需求效果一致,仅仅是把存储的图片路径文件夹做了改变,由公共存储位置转为私有存储,下图是相机的截图,第一个【demox_camera】是/storage/emulated/0/Pictures/demox_camera 公共目录下的文件夹(内3张图片),第二个【demox_camera】是/storage/emulated/0/Android/data/com.change.demox/files/Pictures/demox_camera 私有存储中的文件夹(内1张图片)

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/731616.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号