下载的文件在某些​​设备上没有扩展名

时间:2016-11-01 14:12:48

标签: android file-extension android-download-manager

我陷入了一个非常棘手的问题。 上下文:我的应用程序是为打开具有特殊扩展名的文件而构建的(比如myFile.png.myapp)

当我使用Chrome从我的服务器下载它时,它下载得很好,我得到一个“打开”提示并触发我的应用程序,但是,意图中的路径的格式为content:// downloads / my_downloads / 2136。

没有延期。

由于各种原因,我可以发送的唯一MimeType是application / octet-stream,所以我无法知道该文件确实是一个png。

如果我点击下载文件的通知,它可以正常工作。

这只发生在运行Android 6.0.1的Nexus 5上,在其他所有设备上,我得到实际的文件名并且运行顺畅。

我设置了清单和应用内权限。

我的调查让我觉得这是由于DownloadProvider包中的Helpers类,但我不确定。

有人可以帮忙吗?

干杯

2 个答案:

答案 0 :(得分:1)

我最终分析了文件的标题以提取文件签名并确定MimeType。我修改了这里的代码https://github.com/Muraad/Mime-Detective

这不是完美的,而是连贯的解决方法。

https://github.com/tajoumal/MimeTypeHelper/blob/master/MimeTypeHelper.java

答案 1 :(得分:0)

String path = "content://downloads/my_downloads/2136";

String mimeType = getContentResolver().getType(Uri.parse(path));