如何从Android 7.0中的SD卡读取文件?

时间:2018-04-23 11:57:00

标签: java android

对于以前的电话(Android 4.0),我写了一个应用程序,它使用数据文件,我使用USB线从PC复制到SD卡。应用程序使用Environment.getExternalStorageDirectory()来检索文件,正如许多网站所建议的那样。

在使用Android 7.0的电话上,此应用程序不再有效。 Environment.getExternalStorageDirectory()返回“storage / emulated / 0 /”,它映射到内部存储。我尝试了getExternalStoragePublicDirectory,但这引用了相同的位置。

所以我尝试了一个硬编码的“/ sdcard”。这也没有参考SD卡。在从应用程序将测试文件写入该位置时,我在内部存储中使用File Commander应用程序找到了该文件,但是在PC上使用Windows资源管理器无法在内部存储或SD卡中找到该文件,因此它我不清楚它到底在哪里。在我的网络搜索中,我看到了对/ sdcard0和/ sdcard1的引用,但测试这些显示我的电话上都没有。

因此,我的主要问题是:如果getExternalStorageDirectory()不提供此功能,我如何获取Android 7.0及更高版本中SD卡的根目录?

还有一个辅助问题:getExternalStorageDirectory()函数有哪些不能获得外部存储目录?

1 个答案:

答案 0 :(得分:1)

您可以查看getExternalFilesDirs()返回的第二项,以便在SD卡上找到您的应用特定目录。

但是,如果您想将应用更新为现代标准,请使用Storage Access FrameworkIntent.ACTION_OPEN_DOCUMENT_TREE查看StorageVolumes