I am wondering if one can get a java.io.File from a DocumentFile.
是的,大多数情况下你可以。如果用户从主存储或辅助存储中选择“文件”,则可以,因为内容方案与文件或目录的文件路径之间存在一对一的关系。
但是如果你真的需要 java.io.File 你最好使用文件选择器。
[更新]
content://com.android.externalstorage.documents/tree/primar%3ADCIM%2Fdeeper%2Fevendeeper
content://com.android.externalstorage.documents/tree/primary:DCIM/deeper/evendeeper
如果那个例如对应于
/storage/emulated/0/DCIM/deeper/evendeeper.
和
content://com.android.externalstorage.documents/tree/primary%3AAndroid%2Fcom.aaaa.org%2Ffiles%2Fafile.txt
content://com.android.externalstorage.documents/tree/primary:Android/com.aaaa.org/files/afile.txt
转化为
/storage/emulated/0/Android/com.aaa.org/files/afile.txt
如果你认识一个你就认识他们,那么接下来是:存在一对一的关系。
转换唯一需要做的就是替换content://com.android.externalstorage.documents/tree/primary:
为/storage/emulated/0/
这减少了确定的问题/storage/emulated/0/
。
为此,您必须让用户为所选内容方案选择文件系统路径的根目录。如果无法选择,通常可以通过设备上的文件资源管理器应用程序找到。最后,您可以输入路径。
与 Android SAF(存储访问框架)中所做的完全相反:从 TreeUri或其他带有标签的帖子中获取特定的文件 Uri storage-acccess-framework
。