2017-06-17 5 views
0

Download Listener ruft nie und ich bekomme auch keinen dynamischen Download-Link.Webview Download Listener ruft nie

Ich habe eine Website, die herunterladen Schaltfläche enthalten, während auf den Knopf klicken es Download-Link für Dokument erzeugt, während ich auf Download-Button klicken, wird es erfolgreich heruntergeladen Dokumente über Chrome-Browser direkt, sondern über Web sie sehen nicht lädt automatisch Dokumente herunter und erhält keinen Anruf des Zuhörers.

webView.loadUrl(WEBSITELINK); 

webView.setWebViewClient(new WebViewClient() { 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 
      Log.v("Url:","shouldOverrideUrlLoading"); 
      return true; 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 

      // download link generates dynamically by clicking on button 

      webView.loadUrl("javascript:(function(){document.getElementById('download').click();})()"); 

     } 



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

      DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); 

      request.setMimeType(mimeType); 
      //------------------------COOKIE!!------------------------ 
      String cookies = CookieManager.getInstance().getCookie(url); 
      request.addRequestHeader("cookie", cookies); 
      //------------------------COOKIE!!------------------------ 
      request.addRequestHeader("User-Agent", userAgent); 
      request.setDescription("Downloading file..."); 
      request.setTitle(URLUtil.guessFileName(url, contentDisposition, mimeType)); 
      request.allowScanningByMediaScanner(); 
      request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); 
      request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, URLUtil.guessFileName(url, contentDisposition, mimeType)); 
      DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); 
      dm.enqueue(request); 
      Toast.makeText(getApplicationContext(), "Downloading File", Toast.LENGTH_LONG).show(); 
     } 
    }); 

Antwort

0

setDownloadListener legt den Hörer, wenn die WebView den Inhalt nicht denken kann, durch die Rendering-Engine

für weitere Informationen folgen Sie diesem Link setDownloadListener

oder diese link

+0

Gibt es eine Möglichkeit, den Anrufer vollständig zu erzwingen? – Nik

0

Innen behandelt werden oncreate Methode schreibe diesen Code

webView = (WebView) findViewById(R.id.webView); 
    WebSettings webSettings = webView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    webView.loadUrl("place your link here"); 
    webView.setWebViewClient(new WebViewClient()); 

    webView.setDownloadListener(new DownloadListener() { 

     @Override 
     public void onDownloadStart(String url, String userAgent, 
            String contentDisposition, String mimetype, 
            long contentLength) { 
      DownloadManager.Request request = new DownloadManager.Request(
        Uri.parse(url)); 

      request.allowScanningByMediaScanner(); 
      request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); //Notify client once download is completed! 

      DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); 
      dm.enqueue(request); 
      Toast.makeText(getApplicationContext(), "Downloading File", //To notify the Client that the file is being downloaded 
        Toast.LENGTH_LONG).show(); 

     } 
    }); 

} 
Verwandte Themen