问题标签 [storage-access-framework]

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 投票
1 回答
691 浏览

android - 无法通过存储访问框架加载扩展名为 .gpx 的文件

维基百科说GPX 文件的 MIME 类型是application/gpx+xml. 所以我使用了以下代码:

也试过这个:

作为最后的手段,我尝试使用Intent#setTypeAndNormalize(String)方法。不走运——当文件选择器对话框启动时,所有带有.gpx扩展名的文件都是灰色的,即它们是不可选择的。我的代码中是否存在一些问题,或者 SAFIntent有一些预配置的 mime 类型,它可以使用application/gpx+xml但不属于这个集合?

0 投票
1 回答
737 浏览

android - 检查文档 Uri 是否属于外部 SD 卡根目录

我们如何检查所选文件是否使用ACTION_OPEN_DOCUMENT_TREE外部 SD 卡根目录?

0 投票
0 回答
232 浏览

android - 有没有办法为存储访问框架设置默认路径?

存储访问框架 (SAF) 默认为“最近”。有没有办法将默认设置更改为其他内容(如内部存储或 SD 卡)?

0 投票
4 回答
6934 浏览

android - 是否可以从 DocumentFile 获取常规文件?

对于 Android,以下代码返回一个 Uri,可用于创建与目录对应的 DocumentFile。

由于库的许多方法需要一个参数是 java.io.File,我想知道是否可以从 DocumentFile 中获取 java.io.File。

例如,返回的文档树 Uri treeUri 如下:

以下是 ADM 中显示的目录: 在此处输入图像描述

0 投票
1 回答
392 浏览

android - 随机访问 DocumentFile

我怎样才能获得DocumentFile's 的随机访问权限OutputStream,以便我可以找到任何特定位置并从那里开始写作。或者,如果有一种方法可以附加到DocumentFile. 该文件本质上将位于外部 SD 卡上,因此我必须DocumentFile用于此目的。

简而言之,是否也有一个RandomAccessFilefor DocumentFiletoo?

0 投票
1 回答
673 浏览

android - 如何将文件夹路径转换为 ​​Content Uri?

我有一个 File 变量,它实际上是一个文件夹路径。我想得到它的 Uri。如果我使用

我得到类似“file:///mnt/sdcard”的东西。我想得到的是内容方案 Uri,比如“content://com.externalstorage/”,这样我就可以将它与 DocumentFile 一起使用。

0 投票
1 回答
1578 浏览

android - 带有存储访问框架的 ACTION_OPEN_DOCUMENT 返回重复的结果

我正在尝试使用存储访问框架选择图像并将它们上传到我的服务器。
我遇到的问题是,在选择文件后,我得到的结果包含重复项。
我的文件夹中有 279 张照片。
ACTION_OPEN_DOCUMENT返回 279 个结果,但其中一些是重复的,所以有时我得到 275 个唯一结果,有时是 268 个等。重复项随机出现,因此它们不是特定文件。

这是代码:

}

活动的完整代码在这里:https ://github.com/Leonti/android-saf-duplicates/blob/master/app/src/main/java/com/example/leonti/googledriveduplicatesdebugging/MainActivity.java

这是您可以重现该问题的示例 Android 应用程序: https ://github.com/Leonti/android-saf-duplicates 只需将其安装在手机上,选择一些图像(越多越好),它会告诉您总计数和唯一条目的数量。

无论我是从 Google Drive 还是从照片中选择照片,大多数时候我都会得到重复的结果。

无法弄清楚出了什么问题。我在 Android 模拟器上执行了相同的代码(使用另一个帐户并共享了这个 Google Drive 文件夹)并且它按预期工作 - 所有结果都是唯一的。

我在 Nexus 5X 上运行 Android 7.0

谢谢你的帮助!

0 投票
0 回答
131 浏览

android - 将 Java.io.File 保存到 KitKat 及更高版本上的 Android 文件系统

我正在开发一个应用程序,可以将来自 FLIR 相机的热图像保存到手机上的 SD 卡中。我正在使用 Android Marshmallow,我必须使用 FLIR SDK。

FLIR SDK 中有一个“Frame”类。该类有一个方法“Frame.save”,需要一个 Java.io.File 来保存热图像:这来自文档:

保存热 JPEG 文件,该文件具有渲染的视觉预览和嵌入的热数据

当我理解正确时,在 KitKat 或更高版本上,我必须使用 Storage Access Framework。所以我用了它。发送 Intent 并将 Uri 返回到 SD 卡上的选定文件夹。现在到棘手的部分。这个函数应该创建一个文件并返回一个为“Frame.save”方法准备好的Java.io.File。

函数返回的文件不可读取或不可写入...否则,当我尝试直接创建文件时,如下所示:

然后系统总是给我这个模拟文件夹:

所以问题是:如何获得一个可用的 Java 文件,存储在公共存储空间中......谢谢您的时间!

0 投票
1 回答
1224 浏览

android - 如何通过存储访问框架获取 OTG 文件

所以,我想从任何连接的 USB OTG 驱动器中读取一个非常具体的文件。这是一个应该存储在 USB 记忆棒上的文本文件,我需要读取该文件,它有一个特定的名称,比如myFile.txt. 虽然我理解这种获取用户输入的方式是愚蠢的,而且对用户不友好,但我被告知要实施这种方式。

但我的问题是,USB 驱动器有很多挂载点。在我的手机上是/storage/USBStorage1,而在我朋友的是/storage/[HEX_ID]。我试图得到所有这些,但这是不可能的。在 Nexus 手机中,它安装在/mnt/media_rw/[HEX_ID]需要 root 访问权限的设备上。

我搜索了一下,发现了 SAF,但我没有找到任何关于如何在没有用户直接选择的情况下使用它打开任何文件的信息。我不希望选择器出现。我只想检查是否[USB_OTG_PATH]/myFile.txt存在,如果存在我想阅读它。

在旁注中,我是否需要具有 root 访问权限才能读取/mnt文件夹(除了media_rw)?

0 投票
0 回答
162 浏览

android - 存储访问框架(Android Lollipop API 21)是否支持文件截断操作?

我需要截断可移动 SD 卡上的文件。由于存储访问框架 (SAF) 限制,我无法直接在文件上调用truncate(someSize)并被迫使用:

结果我有一个例外:

如果我以rw模式打开文件描述符,为什么上述通道不可写?还有另一种方法可以在棒棒糖上截断 SAF 下的文件!?