首页 > 解决方案 > Android Q 范围存储和外部库

问题描述

如果外部库仅接受 java.io.File 或 Android 10 上的文件路径会怎样?是否所有不使用 DocumentFile 或使用媒体存储处理 Uri 的外部库都无法使用?

例如:我喜欢在 Android 10 及更高版本上使用这个库: https ://github.com/ericfarng/jid3lib

但是这个库只处理 java.io.File 或文件路径。将来我必须使用哪些选项?

我认为有很多应用程序在谷歌更改后变得无法使用。这是正确的,还是每个场景都可以选择维护当前功能?

标签: javaandroidstoragelibrariesq

解决方案


如果外部库仅接受 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.


推荐阅读