我正在尝试在我的 Android 应用程序中实现文件发送功能(允许任何文件,并且这些文件不属于我的应用程序)。从ACTION_OPEN_DOCUMENT
我收到一个,然后我用我从's获得的名称InputStream
制作一个临时File
对象,然后发送文件。我做这一切的原因是我使用了一个只允许对象的 3rd 方 API。ContentResolver
OpenableColumns.DISPLAY_NAME
File
但是OpenableColumns.DISPLAY_NAME
并不能保证我得到的文件名具有文档中所述的文件扩展名。据我了解,在较新版本的 Android 中,无法使用Scoped Storage获取文件的实际文件名或物理路径。因此,我必须检查文件名是否包含扩展名,如果没有 -使用MimeTypeMapContentResolver
获取文件的 MIME 类型和最常见的扩展名。这种方法感觉不是很可靠,因为我必须同时依赖正确确定 MIME 类型和检索正确的扩展名。获取扩展至关重要,至少因为用户应该能够从桌面应用程序下载和打开 PC 上的文件。ContentResolver
MimeTypeMap
那么,是否有可能在启用范围存储的情况下获得 100% 保证的文件名或至少文件扩展名?或者也许有更有效的方法来处理我的情况?我很感激这方面的一些帮助。