android - 使用自定义扩展在 Android 中保存 DocumentFile

标签 android mime-types

在我的应用程序中,用户选择一个目录,然后在 onActivityResult 中创建一个 DocumentFile,如下所示:

Uri treeUri = resultData.getData();
DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri);
DocumentFile newFile = pickedDir.createFile("text/plain", filename);

然后,我使用 OutputStream 写入此 DocumentFile,使用 getUri() 获取 Uri,并将此 Uri 作为额外内容添加到电子邮件 Intent 中,以便将其附加到电子邮件中。

现在,由于我选择了“text/plain”作为我的 MIME 类型,附件的扩展名为“.txt”。但是,我想将此扩展名更改为“.vtk”,但我无法在任何地方找到解决方案。有没有办法做到这一点,还是我仅限于公认的 MIME 类型的 Android?无法识别“.vtk”。

最佳答案

due to the fact that I have chosen "text/plain" as my MIME type, the attached file has a ".txt" extension

不完全是。不需要任何特定的文件名结构。毕竟,完全有可能创建一个在文件方面不起作用的存储提供程序(例如,内容保存在数据库、本地或服务器上的 BLOB 列中)。

电子邮件附件的命名方式基于以下内容:

  • 存储提供商的政策,根据其content Uri 对您的内容的外观
  • 电子邮件客户端的策略,当它在 EXTRA_STREAM 中遇到 content Uri(我假设您正在使用它)
  • 用户

您的文件名 是您对这个东西的名称的建议。您可以尝试将文件扩展名放在那里,但它可能不会被接受(文档建议不应提供)。同样,您可以在 DocumentFile 上调用 renameTo() 来更改名称。存储提供者是否接受 renameTo() 中涉及的任何文件扩展名取决于提供者。用户可以进入与存储提供商合作的其他应用程序,并根据用户的需要为其命名。电子邮件客户端可以对附件名称做任何它想做的事情。等等。

I would like to change this extension to ".vtk", but I have not been able to find a solution anywhere

如果您已将.vtk 放在您的文件名 上,那么您就只能这样做了。那里发生的事情是你无法控制的。

am I limited solely to the recognized MIME types of Android?

欢迎您将 text/plain 替换为任何有效的 MIME 类型,尽管存储提供商将如何处理这取决于提供商。特别是,我不认为任何提供者会知道某某 MIME 类型应该有一个 .vtk 文件扩展名。我不确定是否存在 解析为 .vtk 文件扩展名的标准 MIME 类型。

".vtk" is not recognized.

那不是 MIME 类型,如果那是你的意思的话。

关于android - 使用自定义扩展在 Android 中保存 DocumentFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38002651/

相关文章:

elixir - Phoenix .NotAcceptableError : no supported media type in accept header

asp.net-mvc - ASP.NET MVC/IIS 7.5 : 500 Internal Server Error for static content only

android - 存储用户可访问的配置文件的最佳位置

android - java.lang.NoClassDefFoundError : android. support.v7.widget.* 自从升级到支持库 v23

java - 是否可以在 Android Pepper Robot 模拟器中测试讨论操作

android - 如何更改 NsdManager 使用的 android 设备名称?

java - 解析 JWT token 有效负载数据以在 android/java 中获取特定值

iis - Google Earth(.kmz)MIME类型iis问题

php - 从 MySQL 列确定 mime 类型

http-headers - 哪种MIME类型适合.exe文件?