Datei in WebView herunterladen

Ich habe eine Webansicht in meiner Android Applikation. Wenn der Benutzer zum Webview geht und auf einen Link klicken, um eine Datei herunterzuladen, passiert nichts.

URL = "my url"; mWebView = (WebView) findViewById(R.id.webview); mWebView.setWebViewClient(new HelloWebViewClient()); mWebView.getSettings().setDefaultZoom(ZoomDensity.FAR); mWebView.loadUrl(URL); Log.v("TheURL", URL); 

Wie kann ich den Download in einer Webansicht aktivieren? Wenn ich die Webansicht deaktiviere und die Absicht behalte, die URL auf den Browser von der Anwendung zu laden, dann lädt der Download nahtlos ein.

 String url = "my url"; Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i); 

Kann mir da jemand weiterhelfen? Die Seite lädt ohne Problem, aber der Link zu einer Bilddatei in der HTML-Seite funktioniert nicht …

  • Wie man Android Webview offene Links, die Ziel "_blank" innerhalb eines iframe sind
  • Spielen einer App lokalen Video (.mp4) in einer Webansicht
  • JavaScript funktioniert manchmal nicht in android's Webview
  • Android WebView SSL 'Sicherheitswarnung'
  • Wie kann ich feststellen, wann Android WebView komplett fertig ist?
  • WebView Text Zoom Ausgabe in Android
  • Android-Soft-Tastatur nicht schwenken Web-Ansicht
  • SysUtils: ApplicationContext ist null im ApplicationStatus (WebView)
  • 4 Solutions collect form web for “Datei in WebView herunterladen”

    Hast du es versucht?

     mWebView.setDownloadListener(new DownloadListener() { public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i); } }); 

    Probieren Sie das aus. Nachdem ich viele Beiträge und Foren durchgemacht habe, habe ich das gefunden.

     mWebView.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! request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "Name of your downloadble file goes here, example: Mathematics II "); 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(); } }); 

    Vergessen Sie nicht, diese Erlaubnis zu geben! Dies ist sehr wichtig! Fügen Sie dies in Ihre Manifest-Datei (Die AndroidManifest.xml-Datei)

     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- for your file, say a pdf to work --> 

    Hoffe das hilft. Prost 🙂

    Versuchen Sie mit Download-Manager, die Ihnen helfen können, laden Sie alles, was Sie wollen und sparen Sie Zeit.

    Überprüfen Sie diese auf Optionen:

    Option 1 ->

      mWebView.setDownloadListener(new DownloadListener() { public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { Request request = new Request( Uri.parse(url)); request.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "download"); DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); dm.enqueue(request); } }); 

    Option 2 ->

     if(mWebview.getUrl().contains(".mp3") { Request request = new Request( Uri.parse(url)); request.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "download"); // You can change the name of the downloads, by changing "download" to everything you want, such as the mWebview title... DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); dm.enqueue(request); } 
      mwebView.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(); }}); 
    Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.