afkT
afkT
是因为 [分区存储](https://developer.android.google.cn/training/data-storage#scoped-storage) 需要适配使用吗?
其实是有的,需要依赖 ```gradle // DevApp Android 工具类库 implementation 'io.github.afkt:DevAppX:2.2.8' // DevAssist 快捷功能辅助类库 implementation 'io.github.afkt:DevAssist:1.2.5' ``` [DevAssist Engine](https://github.com/afkT/DevUtils/blob/master/lib/DevOther/src/main/java/ktx/dev/engine) DevAssist Engine 主要为了解决项目代码中**对第三方框架强依赖使用、以及部分功能版本适配。**通过实现对应功能模块 Engine 接口,实现对应的方法功能,**对外无需关注实现代码,直接通过 DevXXXEngine 进行调用,****实现对第三方框架解耦、一键替换第三方库、同类库多 Engine 混合使用、以及部分功能适配 ( 如外部文件存储 MediaStore 全局适配 )...
你需要的存储适配,在以上路径的 storage 包内,根据你使用的语言,copy 到项目中 ```java // Application 中初始化 DevStorageEngine.setEngine(DevMediaStoreEngineImpl()) ``` ```java // 使用 DevStorageEngine.getEngine().xxx ``` * **DevUtils MediaStore Engine 实现 ->** [DevMediaStoreEngineImpl.java](https://github.com/afkT/DevUtils/blob/master/lib/DevOther/src/main/java/dev/engine/storage/DevMediaStoreEngineImpl.java) | 方法 | 注释 | | :- |...
这个 DevMediaStoreEngineImpl 模块,就是用于处理对 内部存储、外部存储(Image、Video、Audio、Download)文件不同操作,至于移动、复制文件等,应该都在内部存储路径中操作,无需适配
按我的理解,你要的移动、复制文件,其实就是把文件备份到外部存储去是吗,(因为分区存储原因,你高版本是无法移动文件,只能说存入文件)
按我的理解,你要的移动、复制文件,其实就是把文件备份到外部存储去是吗,(因为分区存储原因,你高版本是无法移动文件,只能说存入文件)
DevStorageEngine 就有这个方法 ```kotlin DevStorageEngine.getEngine()?.insertMediaToExternal( // 外部文件存储信息, 会根据文件后缀,自动获取 mimeType 存储到对应文件夹下 StorageItem.createExternalItem( "recy.jpg" ), // 资源信息, 如 byte[]、Bitmap、Drawable、Uri、FilePath、InputStream 等 DevSource.create() // 存储结果回调 object : OnDevInsertListener { override fun onResult( result: StorageResult, params:...
关于外部文件存储信息创建有三种方式: ```kotlin // 外部文件存储信息, 会根据文件后缀,自动获取 mimeType 存储到对应文件夹下 StorageItem.createExternalItem( "recy.jpg" ) // 自己指定 mimeType StorageItem.createExternalItem( "recy", MediaStoreUtils.MIME_TYPE_IMAGE_JPG ) // 自己指定 mimeType 并且存储到对应文件夹下 StorageItem.createExternalItem( "recy", MediaStoreUtils.MIME_TYPE_IMAGE_JPG, MediaStoreUtils.RELATIVE_IMAGE_PATH ) ```
其实你要的,都在 [DevMediaStoreEngineImpl.java](https://github.com/afkT/DevUtils/blob/master/lib/DevOther/src/main/java/dev/engine/storage/DevMediaStoreEngineImpl.java) 这里,帮你实现好了。只是没有放到库里面,因为每个项目可能需求不同,在存储前、存储后都有各自的操作等,为了方便,就提供代码,直接 copy 进行使用、修改,但是核心适配功能,已经是都完成的。
> @afkT 作者你好,请问DevMediaStoreEngineImpl.java这个类只有保存文件,那么如何根据文件名字名查询保存地址的uri? 有的,不过是通过`已保存文件的完整路径`获取所属的 Uri [UriUtils.getMediaUri(File)](https://github.com/afkT/DevUtils/blob/master/lib/DevApp/src/main/java/dev/utils/app/UriUtils.java#L233) 该 API 功能适配,我已封装在 [DevEngine](https://github.com/afkT/DevUtils/blob/master/lib/DevEngine/README.md) 库中了,可以视情况依赖使用