我编写了一个小型 android 应用程序,其中包含指向网络上 PDF 文件的链接。问题是,该链接是没有适当文件后缀的通用链接。然而,提供文件的网络服务器将发送一个带有适当后缀的真实文件名,并强制网络浏览器以一个好听的名称保存文件(文件下载的非常常见的做法)。这在任何桌面浏览器(如 FF 或 IE)上都可以正常工作,但是如果我在我的 Android 上启动 VIEW Intent,它会在原始文件下开始下载,从而生成一个没有后缀且不与任何程序关联的文件。
(安装了 Adobe Reader 并且手动重命名的下载打开就好了)
示例:“ http://mysample.com/file/6dbfj73bdngdn3 ”的链接将被标题更改为“mysamplefile.pdf”
这是服务器上的 PHP 片段,为下载的文件设置标题:
header("Expires: 0");
header("Pragma: public");
header("Cache-Control: private, must-revalidate, post-check=0, pre-check=0");
header("Content-length: 12345");
header("Content-type: application/force-download; filename=\"mysamplefile.pdf\"");
header("Content-type: application/octet-stream; filename=\"mysamplefile.pdf\"");
header("Content-type: application/download; filename=\"mysamplefile.pdf\"");
我尝试了几种打开意图的方法,这是我目前的一种。如果我指定了一个 mime 类型,我会得到一个 ActivityNotFoundException,如果我不指定,我会在没有后缀的原始文件名下获得上述下载。
String url = "http://mysample.com/file/6dbfj73bdngdn3";
//Intent i = new Intent(Intent.ACTION_VIEW);
//i.setDataAndType(Uri.parse(url), "application/pdf");
Intent i = new Intent(Intent.ACTION_VIEW, URI.parse(url));