- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试递归遍历 Android DocumentFile 树,但我无法获得要为子文件夹返回的文件列表。当我在文件夹 URI 上尝试 listFiles() 时,我每次都得到返回的根文件列表。
为什么这不起作用?
package com.example.usbfoldertest;
import androidx.appcompat.app.AppCompatActivity;
import androidx.documentfile.provider.DocumentFile;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "USBFolderTest";
private static final int RQS_OPEN_DOCUMENT_TREE = 2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(intent, RQS_OPEN_DOCUMENT_TREE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == RESULT_OK && requestCode == RQS_OPEN_DOCUMENT_TREE){
Uri uriTree = data.getData();
Log.d(TAG, "WalkTree: " + uriTree.toString() );
WalkTree( uriTree );
}
super.onActivityResult(requestCode,resultCode,data);
}
private void WalkTree( Uri uriTop ) {
Log.d( TAG, "LoadFileList: " + uriTop.toString() );
DocumentFile documentFile = DocumentFile.fromTreeUri(this, uriTop);
DocumentFile files[] = documentFile.listFiles();
if( files == null ) {
Log.d( TAG, "files is null in LoadFileList()" );
} else {
for( DocumentFile f : files ) {
if( f.isDirectory() ) {
Log.d( TAG, "FOLDER: " + f.getName());
if( f.getName().toLowerCase().contains("lost.dir") ) {
Log.d( TAG, "IGNORE LOST.DIR");
} else {
// Recurse into the folder..
WalkTree( f.getUri() );
}
} else {
Log.d( TAG, "FILE: " + f.getName());
}
}
}
}
}
最佳答案
看来升级文档文件库可以解决问题。我将它添加到我的 build.gradle 中,它现在按预期工作:
implementation 'androidx.documentfile:documentfile:1.0.1'
关于android - 遍历 DocumentFile 树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68961074/
想象一下,你想检查“/folder/subfolder/subsubfolder/test/test.txt”文件是否存在,你会做如下: DocumentFile sdCard = ...; // i
如果我调用 DocumentFile.fromTreeUri()在主目录上,我列出了它的内容,它返回所有 DocumentFile与预期的目录中包含的文件夹和文件相关的对象,但是当我尝试调用 Docu
我尝试使用 DocumentFile (由于存储访问框架)在创建文件之前检查文件是否存在。但是DocumentFile().fromTreeUri()删除可能的 Uri 中不存在的部分,这会导致 Do
有没有办法从给定的 DocumentFile 中获取 RandomAccessFile? 我知道可以通过 getUri 获取 InputStream InputStream inputStream =
我正在尝试递归遍历 Android DocumentFile 树,但我无法获得要为子文件夹返回的文件列表。当我在文件夹 URI 上尝试 listFiles() 时,我每次都得到返回的根文件列表。 为什
对于Android,以下代码返回一个Uri,可用于创建与目录对应的DocumentFile。 Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMEN
我在 Lollipop 遇到的情况是: 用户授予的目录树 (DocumentFile)。 从媒体提供商处检索到的需要修改的音频文件集合。 Uri mediaUri = Uri.withAppended
我使用 DocumentFile 检查文件元数据和存在性。这是这样实例化的: DocumentFile df = DocumentFile.fromSingleUri(context, uri); b
我正在尝试使基于File 的文档系统适应使用DocumentFile 的内容,以便允许在 API >= 29 上进行外部存储读/写访问。 我让用户使用 Intent.ACTION_OPEN_DOCUM
背景 从 API 21 (Lollipop) 开始,应用可以获得修改真实 SD 卡的特殊“权限”,如我之前写的帖子(here 和 here)所示。 问题 我可以删除文件,也可以创建文件,但是我找不到执
在我的应用程序中,用户选择一个目录,然后在 onActivityResult 中创建一个 DocumentFile,如下所示: Uri treeUri = resultData.getData();
Android API 有 DocumentFile class .这个类有canWrite() method . 假设我调用了这个方法,它返回了 true。还假设此对象代表“原始”文件。 现在我该怎
我有一个从 ACTION_OPEN_DOCUMENT_TREE 获得的树 URI , 如何在不使用 findFiles() 的情况下获得作为这棵树的子树的 DocumentFile ?假设我知道如何获
我想创建类似“PDF 查看器应用程序”的东西。应用程序将在用户选择的位置搜索所有 *.pdf 文件。用户可以通过这个函数选择这个文件夹: Intent intent = new Intent(Inte
我正在尝试使用 DocumentFile 在我的 android 5.1 手机上列出外部存储设备中的文件 String rootPathURI = "file:/media/storage/sdcar
我想将文件从内部存储复制或移动到 SD 卡。我通过存储访问框架 (SAF) 和 DocumentFile 类... 复制是基于流的,DocumentFile 没有像 File 类那样的功能来设置最后修
我需要访问 Android Studio 项目中的 DocumentFile 类。我花了很长时间才解决这个问题。 Andriod 开发人员文档说我需要导入“androidx.documentfile.
我想用 java.util.zip.ZipFile 读取一个 zip 文件与安卓 DocumentFile 插图: 使用 Storage Access Framework,我得到了 android 系
如果选择了设备的主内存,我需要从 DocumentFile 或 Uri 中获取一个具有正确方案的文件,而不是具有 content://com.android.externalstorage.docum
好吧,我找了又找,没有人知道我的确切答案,或者我错过了。我让我的用户通过以下方式选择目录: Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT
我是一名优秀的程序员,十分优秀!