Comments (24)
是因为 分区存储 需要适配使用吗?
from devutils.
@afkT 对的
from devutils.
对于每个版本都需要单独适配,能将这些适配在库里统一处理,使用者只需像之前一样简单的使用就好了
from devutils.
其实是有的,需要依赖
// DevApp Android 工具类库
implementation 'io.github.afkt:DevAppX:2.2.8'
// DevAssist 快捷功能辅助类库
implementation 'io.github.afkt:DevAssist:1.2.5'
DevAssist Engine DevAssist Engine 主要为了解决项目代码中对第三方框架强依赖使用、以及部分功能版本适配。通过实现对应功能模块 Engine 接口,实现对应的方法功能,对外无需关注实现代码,直接通过 DevXXXEngine 进行调用,实现对第三方框架解耦、一键替换第三方库、同类库多 Engine 混合使用、以及部分功能适配 ( 如外部文件存储 MediaStore 全局适配 ) 等
但是对应的 Engine 实现代码,需要 copy 到项目中进行初始化。
from devutils.
你需要的存储适配,在以上路径的 storage 包内,根据你使用的语言,copy 到项目中
// Application 中初始化
DevStorageEngine.setEngine(DevMediaStoreEngineImpl())
// 使用
DevStorageEngine.getEngine().xxx
- DevUtils MediaStore Engine 实现 -> DevMediaStoreEngineImpl.java
方法 | 注释 |
---|---|
insertImageToExternal | 插入一张图片到外部存储空间 ( SDCard ) |
insertVideoToExternal | 插入一条视频到外部存储空间 ( SDCard ) |
insertAudioToExternal | 插入一条音频到外部存储空间 ( SDCard ) |
insertDownloadToExternal | 插入一条文件资源到外部存储空间 ( SDCard ) |
insertMediaToExternal | 插入一条多媒体资源到外部存储空间 ( SDCard ) |
insertImageToInternal | 插入一张图片到内部存储空间 |
insertVideoToInternal | 插入一条视频到内部存储空间 |
insertAudioToInternal | 插入一条音频到内部存储空间 |
insertDownloadToInternal | 插入一条文件资源到内部存储空间 |
insertMediaToInternal | 插入一条多媒体资源到内部存储空间 |
from devutils.
这个 DevMediaStoreEngineImpl 模块,就是用于处理对 内部存储、外部存储(Image、Video、Audio、Download)文件不同操作,至于移动、复制文件等,应该都在内部存储路径中操作,无需适配
from devutils.
@afkT 移动、复制文件等是在外部存储操作,因为存储的都是重要文件放在外部备份比较安全,对于使用外部存储的场景还是不少的
from devutils.
库的精华就在于对外部存储的适配,haha...
from devutils.
按我的理解,你要的移动、复制文件,其实就是把文件备份到外部存储去是吗,(因为分区存储原因,你高版本是无法移动文件,只能说存入文件)
from devutils.
按我的理解,你要的移动、复制文件,其实就是把文件备份到外部存储去是吗,(因为分区存储原因,你高版本是无法移动文件,只能说存入文件)
from devutils.
对
from devutils.
DevStorageEngine 就有这个方法
DevStorageEngine.getEngine()?.insertMediaToExternal(
// 外部文件存储信息, 会根据文件后缀,自动获取 mimeType 存储到对应文件夹下
StorageItem.createExternalItem(
"recy.jpg"
),
// 资源信息, 如 byte[]、Bitmap、Drawable、Uri、FilePath、InputStream 等
DevSource.create()
// 存储结果回调
object : OnDevInsertListener {
override fun onResult(
result: StorageResult,
params: StorageItem?,
source: DevSource?
) {
showToast(
result.isSuccess(),
"保存成功\n${FileUtils.getAbsolutePath(result.getFile())}",
"保存失败"
)
}
}
)
from devutils.
关于外部文件存储信息创建有三种方式:
// 外部文件存储信息, 会根据文件后缀,自动获取 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
)
from devutils.
我首页看了下有存储的api就有了独立存储库的想法,本人小白一个,不会封装,还是感谢花费时间给我解答
from devutils.
其实你要的,都在 DevMediaStoreEngineImpl.java 这里,帮你实现好了。只是没有放到库里面,因为每个项目可能需求不同,在存储前、存储后都有各自的操作等,为了方便,就提供代码,直接 copy 进行使用、修改,但是核心适配功能,已经是都完成的。
from devutils.
好的,我在看下
from devutils.
@afkT 作者你好,请问DevMediaStoreEngineImpl.java这个类只有保存文件,那么如何根据文件名字名查询保存地址的uri?
from devutils.
@afkT 作者你好,请问DevMediaStoreEngineImpl.java这个类只有保存文件,那么如何根据文件名字名查询保存地址的uri?
有的,不过是通过已保存文件的完整路径
获取所属的 Uri
该 API 功能适配,我已封装在 DevEngine 库中了,可以视情况依赖使用
from devutils.
完整路径要怎么获取?比如有这样的场景:在某个页面保存了一个文件到公共目录,第二次进入该页面,需要判断该文件是否存在,那么这个时候需要怎么获取到您这边所说的完整路径?
from devutils.
完整路径要怎么获取?比如有这样的场景:在某个页面保存了一个文件到公共目录,第二次进入该页面,需要判断该文件是否存在,那么这个时候需要怎么获取到您这边所说的完整路径?
// 待保存文件名
val fileName = "asd.jpg"
// 创建存储参数数据模型
val item = StorageItem.createExternalItem(fileName)
// 判断待保存文件是否存在
val exist = UriUtils.isUriExists(
UriUtils.getUriForFile(item?.getExternalFile(fileName))
)
这样就可以复合你要求了,如果文件不存在,那么调用 DevEngine.getStorage()?.insertImageToExternal()
传入上面的 item 进行存储
from devutils.
完整 code
// 待保存文件名
val fileName = "asd.jpg"
// 创建存储参数数据模型
val item = StorageItem.createExternalItem(fileName)
// 判断待保存文件是否存在
val exist = UriUtils.isUriExists(
UriUtils.getUriForFile(item?.getExternalFile(fileName))
)
// 判断文件是否存在
if (exist) {
ToastTintUtils.success("$fileName 文件已存在")
} else {
DevEngine.getStorage()?.insertImageToExternal(
item, // 存储参数数据模型
DevSource.create(wallpaper), // 待存储数据源
object : OnDevInsertListener {
override fun onResult(
result: StorageResult,
params: StorageItem?,
source: DevSource?
) {
showToast(
result.isSuccess(),
"保存成功\n${FileUtils.getAbsolutePath(result.getFile())}",
"保存失败"
)
}
}
)
}
from devutils.
感谢回复,大概流程了解。希望能把版本适配这块单独抽出来,项目写的非常好,但是有点大而乱了。我相信该issue提出者,也是看demo,好多东西没有找到的原因,只能过来请教。
from devutils.
感谢回复,大概流程了解。希望能把版本适配这块单独抽出来,项目写的非常好,但是有点大而乱了。我相信该issue提出者,也是看demo,好多东西没有找到的原因,只能过来请教。
哈哈,有的,就是因为这个 issue 专门封装了一个库 DevEngine 库,这个库包含大多数快捷开发的功能,而不是像以前需要自己 copy 代码进行使用。
from devutils.
error: resource android:color/system_neutral2_500 not found 为啥引入抓包工具就包这个错误
from devutils.
Related Issues (20)
- 关联库出错 HOT 3
- 能否出个android Q的文件存储操作等的适配 HOT 1
- 建议加一个 WorkManager 封装工具类 HOT 1
- 发现demo在使用DevEnvironment过程中会出现如下问题 ,华为8.10 10.0.0 都有这个报错信息 HOT 1
- DevEnvironment 的DevEnvironmentActivity 界面显示错误 HOT 1
- 请问坐标系工具类里面通过两点的坐标系计算距离这个功能,是在哪个坐标体系下进行计算的?谷歌的?还是火星坐标系?还是百度坐标系 HOT 1
- 请问坐标系工具类里面通过两点的坐标系计算距离这个功能,是在哪个坐标体系下进行计算的?谷歌的?还是火星坐标系?还是百度坐标系?
- 截图工具类 HOT 2
- 建议加上获取可运行app列表的API HOT 1
- DateUtils.isInTimeHHmmss("7:00","7:00") HOT 4
- ava.lang.Exception: Toast callstack! HOT 2
- 狗都不用
- AlarmUtils.java HOT 2
- DEV工具类,是否有清除缓存和计算缓存大小的方法? HOT 2
- AppUtils HOT 2
- GsonUtils HOT 1
- 电池电量信息 HOT 1
- error: resource android:color/system_neutral2_500 not found
- JSON to Code报错问题 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from devutils.