2016-03-23 17 views
2

Ich habe eine Webseite in mein WebView geladen, die das Herunterladen von MP3 ermöglicht. Sie müssen jedoch mit der rechten Maustaste/lange auf den Download-Button tippen und auf "Link speichern unter" klicken, um ein MP3 herunterzuladen. Wenn ich nur auf den Download-Button tippe, wird das Streaming statt des Downloads gestartet.Dateien in Webview herunterladen?

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_download); 

    webView = (WebView) findViewById(R.id.webView1); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.setWebViewClient(new MyWebViewClient()); 

    webView.getSettings().setLoadsImagesAutomatically(false); 
    // download manager 
      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); 
        String cookies = CookieManager.getInstance().getCookie(url); 
        request.addRequestHeader("cookie", cookies); 
        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(); 
       } 
      }); 
      //download manager 
    webView.loadUrl("http://www.beemp3s.org/"); 
} 

private class MyWebViewClient extends WebViewClient { // handle URLs in 
                 // webview only 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 
    } 

Wie erzwinge ich meinen Code zum Herunterladen von Dateien anstelle von Streaming? :)

+0

Lassen Sie den Webview nicht alle URLs behandeln. Sie erweitern bereits 'shouldOverrideUrlLoading (...) ' –

+0

Ich möchte alles in meinem Webview herunterladen und meinen eigenen Download-Manager verwenden – Emily

Antwort

-1

Ich weiß nicht, ob es helfen wird, aber versuchen Sie, diese Zeilen hinzuzufügen.

private class myWebViewClient extends WebViewClient { 

@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    if (url.contains("beemp3.org")) { 
     view.loadUrl(url); 
    } else { 
     Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
     startActivity(i); 

    } 


    return true; 

}