2011-12-05 214 views
1

在我的應用程序中,用戶需要從網址下載PDF文件並將其存儲在SD卡上。 但是這裏的catch是我只能使用DefaultHttpClient來訪問url。 我找到了幾個解決方案,但沒有使用DefaultHttpClient。 下載PDF後,我也想在我的應用程序中查看PDF。正在下載PDF文件

回答

4

從URL retreiving數據//使用這個方法來下載pdf文件

public void downloadPdfContent(String urlToDownload){ 

      try { 

       String fileName="xyz"; 
      String fileExtension=".pdf"; 

//   download pdf file. 

       URL url = new URL(urlToDownload); 
       HttpURLConnection c = (HttpURLConnection) url.openConnection(); 
       c.setRequestMethod("GET"); 
       c.setDoOutput(true); 
       c.connect(); 
       String PATH = Environment.getExternalStorageDirectory() + "/mydownload/"; 
       File file = new File(PATH); 
       file.mkdirs(); 
       File outputFile = new File(file, fileName+fileExtension); 
       FileOutputStream fos = new FileOutputStream(outputFile); 
       InputStream is = c.getInputStream(); 
       byte[] buffer = new byte[1024]; 
       int len1 = 0; 
       while ((len1 = is.read(buffer)) != -1) { 
        fos.write(buffer, 0, len1); 
       } 
       fos.close(); 
       is.close(); 

       System.out.println("--pdf downloaded--ok--"+urlToDownload); 
      } catch (Exception e) { 
       e.printStackTrace(); 

      } 
    } 

//用於查看PDF使用此方法

private void onPdfClick() 
    { 

//  String pdfFile = Environment.getExternalStorageDirectory()+ File.separator + AstroManager.file.getName(); 

     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(Uri.fromFile(new File("/sdcard/mydownload/xyz.pdf"), "application/*"); 

     startActivity(intent); 
    } 
+0

正如我在我的問題中提到的,我想使用DefaulthttpClient。 在你的答案中,你已經使用HttpURLConnection – Gaurav

+0

你可以改變它爲DefaulthttpClient,最新的問題。 –

+1

非常感謝。對不起,我花了時間。其實問題是,我的網址有一些重定向,所以我已經處理,以及..但你的代碼效果不錯:) – Gaurav

1

如果您必須打開PDF文件,必須在您的設備上安裝pdf閱讀器。否則它將顯示空白屏幕。 也here是很好的例子從服務器下載pdf查看其內容