2013-02-27 92 views
0

我寫了一個小型的Android應用程序,該應用程序具有指向網絡上PDF文件的鏈接。問題是,該鏈接是沒有適當文件後綴的通用鏈接。然而,提供文件的網絡服務器將發送一個具有適當後綴的真實文件名,並強制網頁瀏覽器將文件保存在一個不錯的名字下(文件下載很常見)。 這適用於FF或IE等任何桌面瀏覽器,但如果我在Android上啓動VIEW Intent,它會在原始文件下啓動下載,導致無後綴且與任何程序無關的文件。Android - 通過URL打開PDF文件,通過HTTP頭文件設置通過意圖

(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)); 
+0

看來,Android的忽略了一些與這些標題是否包含在任何文件名或參數之間,或者分號在結尾處。 – ToBe 2013-02-27 10:43:54

回答

1

我結束了在web瀏覽器打開URL通過它的意圖。問題是,這個瀏覽器對於你發送的頭文件來說是非常挑剔的。如果每個元素之間的內容類型標題中有空白,則Android將忽略它們。

錯誤:

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

正確:

header("Content-type: application/download;filename=\"mysamplefile.pdf\""); 
-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); 

這將打開谷歌文檔內的WebView的PDF - Linkto是URL到您的PDF文件

我不知道這是否是你想要的東西在一些希望盡力幫助方式

,但您的網址是重新調整錯誤文檔dsnt存在

+0

我的網址只是一個樣本,並不存在。可悲的是,GoogleDocs不是一個選項,因爲這將是一個商業應用程序。我不能在那裏使用那個查看器。 – ToBe 2013-02-27 09:41:43

+0

我希望你可以使用docs在一個comersial應用程序,這不會保存docbut只是打開它與谷歌文檔查看器 - 如果你由於其他一些原因不想這樣 – 2013-02-27 09:44:14