对于以前的电话(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()函数有哪些不能获得外部存储目录?
答案 0 :(得分:1)
您可以查看getExternalFilesDirs()
返回的第二项,以便在SD卡上找到您的应用特定目录。
但是,如果您想将应用更新为现代标准,请使用Storage Access Framework
或Intent.ACTION_OPEN_DOCUMENT_TREE
查看StorageVolumes
。