2013-01-07 34 views
10

Tôi đang truy cập trang web có tài liệu .pdf. Nếu tôi mở tài liệu đó thông qua trình duyệt web, nó sẽ bắt đầu tải xuống. Nếu tôi mở nó thông qua webview, không có gì xảy ra. Tôi cần cài đặt gì để áp dụng cho webview để làm cho nó bắt đầu tải xuống?Tải xuống bản pdf thông qua trình duyệt web và webview

Tôi đã có điều này.

wvA.setDownloadListener(new DownloadListener() 
{ 
    public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, 
        long size) 
    { 
     Intent viewIntent = new Intent(Intent.ACTION_VIEW); 
     viewIntent.setDataAndType(Uri.parse(url), mimeType); 

     try 
     { 
      startActivity(viewIntent); 
     } 
     catch (ActivityNotFoundException ex) 
     { 
     } 
    } 
}); 
+1

Hãy xem [ở đây] (http://stackoverflow.com/questions/8485416/how-to-download-a -pdf-from-an-android-webview) – silentw

+0

Cảm ơn bạn đã trả lời. nơi nên thêm "view.getContext(). startActivity (new Intent (Intent.ACTION_VIEW, Uri.parse (url)));" ? – user200658

+0

Giọng của bạn thể hiện bản thân bằng ngôn ngữ viết là gì? – njzk2

Trả lời

15

Bạn nên tạo WebViewClient và đặt nó vào chế độ xem web của bạn. Mỗi khi bạn nhấp vào một liên kết, phương thức shouldOverrideUrlLoading của WebViewClient sẽ được gọi. Kiểm tra xem url có trỏ tới tệp pdf và làm những gì bạn muốn không. Ví dụ, bạn có thể xem pdf.

webView.setWebViewClient(new WebViewClient() { 
    public boolean shouldOverrideUrlLoading (WebView view, String url) { 
     if (url.endsWith(".pdf")) { 
      startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); 
      // if want to download pdf manually create AsyncTask here 
      // and download file 
      return true; 
     } 
     return false; 
    } 
}); 
+1

bạn có thể giúp tôi tôi đã mở nhiều trang html5 trong webview ở giữa một trang downlod tập tin pdf. tôi đã sử dụng mã này cho nó nhưng nó sẽ không tải xuống tệp pdf – PankajAndroid

15

Thực hiện một người biết lắng nghe tải để xử lý bất kỳ loại tải:

webView.loadUrl(uriPath); 

webView.setDownloadListener(new DownloadListener() { 
    @Override 
    public void onDownloadStart(String url, String userAgent, 
      String contentDisposition, String mimetype, 
      long contentLength) { 

     startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); 
    } 
}); 
+0

khi thực hiện việc nàyDownloadListener sẽ được gọi là @Mobistry Có cách nào khác để tải xuống tệp pdf không, [Câu hỏi] (http://stackoverflow.com/questions/30301170/làm thế nào để ẩn-trình duyệt-khi-nó-là-về-để-được-hiển thị-trong giây lát-android) – Prabs

+0

Mã này đang tải xuống tệp nhưng nó đang mở trình duyệt web và quay lại ứng dụng, Cách thực hiện dừng hành vi này.điều cần làm nếu tôi không muốn làm cho trình duyệt đó bật lên – Prabs

+0

Đây là một câu trả lời tuyệt vời. Thật đơn giản - theo cách này, bạn có thể cho phép trình duyệt xử lý việc tải xuống. Nhưng nếu bạn muốn làm điều đó bên trong webview, bạn cũng có thể - bạn có URL được thông qua. – dorsz

Các vấn đề liên quan