0

所以,我想从任何连接的 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)?

4

1 回答 1

0

我没有找到任何关于如何在没有用户直接选择的情况下使用它打开任何文件的信息

那是因为没有选择。

我只想检查 [USB_OTG_PATH]/myFile.txt 是否存在,如果存在我想阅读它。

这是不支持的。

如果您的文件位于 、 和 所返回的目录之一getExternalFilesDirs()getExternalCacheDirs()那么getExternalMediaDirs()可以使用普通的 Java 文件 I/O 直接访问它。但是,AFAIK,该目录需要作为运行应用程序的一部分来创建——另一位开发人员在尝试提前创建目录时遇到了问题。因此,对于您的用例,这种方法不太可能实用,但幸运的是我错了,它证明对您有用。

我是否需要拥有根访问权限才能读取 /mnt 文件夹(media_rw 除外)?

一般来说,是的,但实际上答案因设备、Android 操作系统版本等而异。

于 2016-11-15T15:50:10.953 回答