Android - 如何使用内容提供程序列出文件夹中的文件

Android - How to list files inside a folder with a content provider

我正在开发一个应用程序来通过另一个应用程序(比如应用程序 B)中定义的内容提供程序读取文件。 现在,我可以使用以下方法从我的应用程序(应用程序 A)中读取特定文件:

[...]
InputStream content = getContentResolver().openInputStream(content://.../path_of_the_folder/file_name.txt);
BufferedReader reader1 = new BufferedReader(new InputStreamReader(content));
String linetext;
       while ((linetext = reader1.readLine()) != null) { //printout
[...]

但是我怎样才能列出存储在它自己的文件夹中的所有文件?我正在尝试使用 class 文件中定义的 "list" 方法,但是如何将从 openInputStream 获得的内容转换为 File 对象?

非常感谢大家

ContentProvider 基本协议不支持以这种方式浏览目录结构。

如果您恰好是这两个应用程序的作者,欢迎您为此发明自己的机制,例如:

  • 在文件夹 Uri 的某些修改版本上使用 query() 以使其 return 一个 Cursor 代表文件夹的内容,或者

  • 使用 call() 并让它 return 一个 Bundle 包含子文件夹列表 Uri 值和子文档列表 Uri 个值,或

  • 流回一些 JSON 或 XML 或文件夹的 "content" 之类的东西,其中 JSON 或 XML描述文件夹的内容