所以,我想从任何连接的USB OTG驱动器中读取一个非常具体的文件。它是一个应存储在USB记忆棒上的文本文件,我需要读取该文件,该文件具有特定名称,例如myFile.txt
。虽然我理解这种用户输入是愚蠢的,不是用户友好的,但这是我告诉他们实施的。
但我的问题是,USB驱动器有很多挂载点。在我的手机上/storage/USBStorage1
,而在我朋友的/storage/[HEX_ID]
上。我试图搞定所有这些,但这是不可能的。在Nexus手机中,它安装在需要root访问权限的/mnt/media_rw/[HEX_ID]
上。
我搜索了一下,找到了SAF,但我没有找到任何关于如何使用它来打开任何文件而无需用户直接选择。我不希望挑选者出现。我只想检查[USB_OTG_PATH]/myFile.txt
是否存在,如果存在,我想阅读它。
在旁注中,我是否需要root访问才能读取/mnt
个文件夹(media_rw
除外)?
答案 0 :(得分:0)
在没有用户直接选择的情况下,我没有找到任何关于如何使用它打开任何文件的内容
那是因为没有选择。
我只想检查[USB_OTG_PATH] /myFile.txt是否存在,如果存在,我想阅读它。
不支持。
如果您的文件位于getExternalFilesDirs()
,getExternalCacheDirs()
和getExternalMediaDirs()
,返回的其中一个目录中,那么您可以使用普通的Java文件I / O直接访问它。但是,AFAIK,该目录需要在运行应用程序时创建 - 另一位开发人员在尝试提前创建目录时遇到了问题。因此,对于您的用例,这种方法不太可行,但幸运的是我错了,它证明对您有用。
我是否需要对read / mnt文件夹进行root访问(media_rw除外)?
一般来说,是的,虽然在实践中答案因设备,Android操作系统版本等而异。