如何在存储访问框架中设置不常见的文件扩展名?

Posted

技术标签:

【中文标题】如何在存储访问框架中设置不常见的文件扩展名?【英文标题】:How to set uncommon file extension in storage access framework? 【发布时间】:2018-01-16 07:26:20 【问题描述】:

我正在开发一个创建和打开特定文件类型的 android 应用程序。我正在使用存储访问框架来访问 Kitkat 或以上操作系统的文件。现在我需要打开.enc 文件并过滤掉任何其他文件。使用我试过的存储访问框架:

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("file/enc");

Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType(".enc");

但他们都没有工作。请帮帮我。

【问题讨论】:

【参考方案1】:

现在我需要打开 .enc 文件并过滤掉任何其他文件

这是不可能的,抱歉。

此外,没有什么可以阻止用户或其他软件拥有一个恰好没有.enc 作为文件扩展名的完全有效的文件,因为内容可能没有表示为文件。例如,此网页是 html 格式,但 URL 不以 .html 结尾。

相反,允许用户选择任何内容,然后验证结果选择,看看它是否适合您期望的任何文件格式。

【讨论】:

很遗憾,SAF 有这么简单的 API。许多使用 MIME 类型的实际应用程序都有使用虚构的 mime 类型(如“application/x-extension”)来表示未识别文件的人工 mime 类型的做法,例如“application/x-enc”、“application/x-lnk”等。此外,MIME 类型的实际用户通常使用 libmagic 或类似软件并与它的开发人员通信以将感兴趣的魔术签名添加到列表中。但 Android 是闭门开发的,因此向其添加新的 MIME 类型基本上是不可能的。那里的 API 选择不佳……

以上是关于如何在存储访问框架中设置不常见的文件扩展名?的主要内容,如果未能解决你的问题,请参考以下文章

如何在父 div 中设置不透明度而不影响子 div? [复制]

如何在门户的 Azure BLOB 存储中设置 CORS?

如何使用 JFileChooser 保存文件?

Android 存储访问框架 - 自定义文件类型的启动选择器

access中设置不等于

Java - 在 JPanel 中设置不透明度