java - Android Q 范围存储和外部库
问题描述
如果外部库仅接受 java.io.File 或 Android 10 上的文件路径会怎样?是否所有不使用 DocumentFile 或使用媒体存储处理 Uri 的外部库都无法使用?
例如:我喜欢在 Android 10 及更高版本上使用这个库: https ://github.com/ericfarng/jid3lib
但是这个库只处理 java.io.File 或文件路径。将来我必须使用哪些选项?
我认为有很多应用程序在谷歌更改后变得无法使用。这是正确的,还是每个场景都可以选择维护当前功能?
解决方案
如果外部库仅接受 java.io.File 或 Android 10 上的文件路径会怎样?是否所有不使用 DocumentFile 或使用媒体存储处理 Uri 的外部库都无法使用?
您始终可以将内容复制到您控制的文件中(例如,在 中getCacheDir()
),然后使用带有该副本的库。
此外,在 Android R 上(至少通过 DP3),“原始路径”基本上意味着READ_EXTERNAL_STORAGE
再次用于访问外部存储。因此,您可能只需要担心 Android 10 的复制问题。
例如:我喜欢在 Android 10 及更高版本上使用这个库:https ://github.com/ericfarng/jid3lib
但是这个库只处理 java.io.File 或文件路径。将来我必须使用哪些选项?
由于这个库是开源的,您可以选择制作自己的库副本,该副本可以在InputStream
. 该特定库将有些难以修改,因为它依赖于RandomAccessFile
.
推荐阅读
- javascript - 如何从按钮启动此功能?
- c++ - 在 C 或 C++ 上交换指针
- f# - 为 `[ 调用 `argv` 中定义的特定函数
]` 或动态命名要调用的函数 - iot - 如何使用物联网实验室平台以及如何选择合适的节点
- laravel-7 - Laravel 7 安装 - npm run dev 错误
- python - 当数组在Python中加起来不等于's'时,如何返回一个总和最接近整数's'的子集?
- java - 异常处理程序不能作为控制器建议
- javascript - 使用 Firebase 实时数据库 JS SDK 测试数据库连接的方法?
- react-native - 如何在 React Native/Expo 中存储/读取静态内容数据
- swift - 如何获得接受字符串或字符串数组的函数?