问题标签 [android-document-provider]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
150 浏览

android - 使用 Intent.ACTION_OPEN_DOCUMENT 选择文件并使用 Retrofit2 上传到服务器

有一些关于从 Android 选择和上传文件的相关问题。但是这些答案已经过时,并且这些响应中的大多数方法都已消失/已弃用。

我正在尝试使用Intent.ACTION_OPEN_DOCUMENT从本地存储中获取文件并使用Retrofit将其上传到服务器。但我无法将 Uri 转换为 File 实例。另外,我无法使用 Retrofit 上传该文件。

这是我用来获取文件的代码:

我得到的错误是:

我的目标是:
  • 从安卓获取文件
  • 使用改造将该文件上传到服务器
  • 从服务器下载文件
  • 将该文件保存到本地存储

任何一点帮助将不胜感激。我还创建了一个GitHub Repo来重现该问题。

0 投票
0 回答
453 浏览

android - 如何在 Android 10 及更高版本中使用改造多部分从“DocumentFile”获取文件并将该文件发送到服务器

我能够打开文件资源管理器并在 DocumentFile 对象中获取文件,但我坚持下一步,即。将文件作为多部分发送。

第一步:打开文件资源管理器

第 2 步:在 onActivityResult() 中获取文件

在上述步骤中,我无法发送文件,因为服务器抛出此错误FileNotFoundException. open failed: ENOENT (No such file or directory)

0 投票
0 回答
395 浏览

android - Intent.ACTION_OPEN_DOCUMENT_TREE 和 DocumentsContract.buildChildDocumentsUri 不匹配

我只想列出某个文件夹的文件。我Intent.ACTION_OPEN_DOCUMENT_TREE用来让用户选择文件夹。URI 保存在sharedPrefs.

然后我试图通过使用从那个 URI 中获取孩子

问题是如果用户选择了子文件夹,则childrensUriUsingTree返回的URIDocumentsContract与给定的 URI 不匹配。Downloads如果他像一切正常一样使用一级子文件夹。但是,如果用户选择了这样的子文件夹DCIM/MyFolder,则会从 url 中删除,并且只有第一级子文件夹仍然存在。

例如 content://com.android.externalstorage.documents/tree/primary:DCIM/Camera 将被制作成 content://com.android.externalstorage.documents/tree/primary%3ADCIM/document/primary%3ADCIM/children所以相机部分只是被剥离了。

这会导致权限异常,因为Intent.ACTION_OPEN_DOCUMENT_TREE没有授予对第一级子文件夹的访问权限。或者,如果存在权限,它将列出该第一级子文件夹中的文件。

这是一个错误还是我做错了什么?

0 投票
1 回答
126 浏览

android-activity - 使用 Intent.ActionCreateDocument 缺少文档提供程序

当我将Intent.ActionOpenDocument其用作活动时,生成的选择器会显示所有可用的文档提供者。当我使用Intent.ActionCreateDocument生成的选择器时,会显示有限的文档提供者子集。有谁知道让Intent.ActionCreateDocument选择器显示所有文档提供者的方法?

动作打开文档 动作创建文档

0 投票
1 回答
353 浏览

android - Android DocumentProvider 崩溃 Files-App / DocumentsUI

嘿,我在使用 DocumentProvider 提供文档时遇到问题

实际上我试图提供一个静态文件,但如果我打开我的文件应用程序并发生以下异常。Files-App 正在崩溃,但如果我试图在我的提供程序中只显示目录,我的代码就可以工作。我做错了什么?我确实为看到 DEFAULT_FILE_PROJECTION 的文档设置了所有必填字段,但在我在文件应用程序中选择我的提供程序后它仍然崩溃

碰撞

这是我正在设置所有必需字段的代码。如果我使用 MimeType Directory 尝试相同的代码,它可以工作

0 投票
1 回答
30 浏览

android - 如何将 App 特定权限添加到 Android DocumentProvider

我想在 AppA 中创建一个文件,然后只能从 AppB 访问它。我可以通过 DocumentProvider 创建文件,然后通过 StorageClient 访问它,请参见此处的示例。如何在 AppA 中设置文件的权限,以便只有 AppB 可以访问它?

AppA中的文件创建方法

AppB中的文件访问方法