我陷入了一个非常棘手的问题。 上下文:我的应用程序是为打开具有特殊扩展名的文件而构建的(比如myFile.png.myapp)
当我使用Chrome从我的服务器下载它时,它下载得很好,我得到一个“打开”提示并触发我的应用程序,但是,意图中的路径的格式为content:// downloads / my_downloads / 2136。
没有延期。
由于各种原因,我可以发送的唯一MimeType是application / octet-stream,所以我无法知道该文件确实是一个png。
如果我点击下载文件的通知,它可以正常工作。
这只发生在运行Android 6.0.1的Nexus 5上,在其他所有设备上,我得到实际的文件名并且运行顺畅。
我设置了清单和应用内权限。
我的调查让我觉得这是由于DownloadProvider包中的Helpers类,但我不确定。
有人可以帮忙吗?
干杯
答案 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));