为什么推荐的 getExternalStorageState() 来替换已弃用的 getExternalStorageDirectory() 不能正常工作?

Why does the recommended `getExternalStorageState()` to replace deprecated `getExternalStorageDirectory()` not work correctly?

问题:当我使用推荐的getExternalStorageState()替换已弃用的getExternalStorageDirectory()时,推荐的替换returns路径错误。我在 FileInputStream 崩溃时发现了这个问题,以前不是这样。

以下内容已弃用但正确 returns:/storage/emulated/0/Download/alaina.jpg

return Environment.getExternalStorageDirectory().toString() + "/Download/" + fileName;

推荐如下returns:mounted/download/alaina.jpg

return Environment.getExternalStorageState() + "/Download/" + fileName;

我所做的: 我已经导入并使用了 tatocaster 的 class RealPathUtil,发现 here 效果很好。但是,现在不推荐使用 EnvironmentMediaStore 中使用的一些方法。通过警告建议使用 getExternalStorageState()。我通常会清理警告并使用建议,这是第一个引起问题的。

模拟器位置:

When I use the recommended getExternalStorageState() to replace the deprecated getExternalStorageDirectory(),

这没有意义,因为您无法将它们相互比较。

一个提供一个文件路径。另一个州。

无需使用 getExternalStorageState(),因为它总是 returns 状态已安装。

多年来一直有外部存储可用。

方法 getExternalStorageDirectory() 有效并且一周前未被弃用。