0

我编写了一个小型 android 应用程序,其中包含指向网络上 PDF 文件的链接。问题是,该链接是没有适当文件后缀的通用链接。然而,提供文件的网络服务器将发送一个带有适当后缀的真实文件名,并强制网络浏览器以一个好听的名称保存文件(文件下载的非常常见的做法)。这在任何桌面浏览器(如 FF 或 IE)上都可以正常工作,但是如果我在我的 Android 上启动 VIEW Intent,它会在原始文件下开始下载,从而生成一个没有后缀且不与任何程序关联的文件。

(安装了 Adob​​e 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));
4

2 回答 2

1

我最终通过它的 Intent 在 Web 浏览器中打开了 URL。问题是这个浏览器对你发送的标题非常挑剔。如果每个元素之间的 Content-Type 标头中有空格,Android 将忽略它们。

错误的:

header("Content-type: application/download; filename=\"mysamplefile.pdf\";");

正确的:

header("Content-type: application/download;filename=\"mysamplefile.pdf\"");
于 2013-04-17T10:12:26.823 回答
-1
String url = "http://mysample.com/file/6dbfj73bdngdn3";
WebView mWebView=new WebView(MyPdfViewActivity.this);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginsEnabled(true);
mWebView.loadUrl("https://docs.google.com/gview?embedded=true&url="+url );
setContentView(mWebView);

这将在 google docs 内的 webview 中打开 pdf——Linkto 是您的 pdf 文件的 url

我不确定这是否是你想要的希望能以某种方式提供帮助

但是您的网址正在重新调整错误文档 dsnt 存在

于 2013-02-27T09:37:43.437 回答