所以,我想从任何连接的USB OTG驱动器读取一个非常特定的文件。它是一个文本文件,应该存储在u盘上,我需要读取这个文件,它有一个特定的名称,比如myFile.txt
。虽然我知道这种获取用户输入的方式很愚蠢,而且不方便用户使用,但这是我被告知要实现的。
但是我的问题是,USB驱动器有许多挂载点。我的手机是/storage/USBStorage1
,而我朋友的手机是/storage/[HEX_ID]
。我试着把他们都抓来,但不可能。在Nexus手机中,它安装在/mnt/media_rw/[HEX_ID]
上,需要root访问。
我搜索了一下,找到了SAF,但是我没有找到任何关于如何使用它来打开任何文件而没有用户的直接选择的东西。我不想让拾荒者出现。我只是想检查[USB_OTG_PATH]/myFile.txt
是否存在,如果存在,我想读取它。
并在旁注,我需要有根访问读取/mnt
文件夹(media_rw
除外)?
我没有找到任何关于如何使用它来打开任何文件没有用户的直接选择
这是因为没有选项。
我只是想检查[USB_OTG_PATH]/myFile.txt是否存在,如果存在,我想读取它。
不支持
如果您的文件位于getExternalFilesDirs()
、getExternalCacheDirs()
和getExternalMediaDirs()
返回的目录之一中,则可以使用普通的Java文件I/O直接访问。但是,我敢说,该目录需要作为运行应用程序的一部分而创建。另一个开发人员在尝试提前创建目录时遇到了问题。因此,对于您的用例,这种方法不太可能是实用的,尽管幸运的是我错了,它被证明对您很有用。
我是否需要root权限来读取/mnt文件夹(media_rw除外)?
一般来说,是的,尽管在实践中答案因设备,Android操作系统版本等而异。