我寫了一個小型的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));
看來,Android的忽略了一些與這些標題是否包含在任何文件名或參數之間,或者分號在結尾處。 – ToBe 2013-02-27 10:43:54