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

标签 android android-contentprovider shared-directory

我正在开发一个应用程序来通过另一个应用程序(比如应用程序 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
[...]

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

非常感谢大家

最佳答案

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

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

  • 在您文件夹的 Uri 的某些修改版本上使用 query() 以让它返回代表文件夹内容的 Cursor,或者

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

  • 流回一些 JSON 或 XML 或其他东西作为文件夹的“内容”,其中 JSON 或 XML 描述文件夹的内容

关于Android - 如何使用内容提供者列出文件夹内的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28009747/

相关文章:

android - 为什么我不能从 AsyncTask 访问全局变量?

java - 如何将数组值放入 db Sqlite 上的数据库?

java - 为 Android 计算器创建点函数

Android Calendar Content Provider : allDay is true but sec, 分、时不为0

java - 同一 View 上的两个独立的可滚动 fragment - Android

java - 应用程序读取错误短信

android - 如何使用 SyncAdapter 处理远程服务器的 RESTful 更新

powershell - 检查文件夹是否也已完成复制

apache - VirtualBox for Apache 中的共享文件夹

java - 如何在不提示用户名/密码的情况下访问 Windows 上的共享文件夹?