Wie kann ich die Datei mit Webview herunterladen? (Dieser Fall ist komisch)

Ich möchte die Datei (wie .mp3) von der Website mit Hilfe von Webview herunterladen, aber das Problem ist, wann immer ich auf den Link tippe, wird es den Browser öffnen (Standard eins), der für eine Sekunde vor dem Schließen erscheint. Und keine Datei heruntergeladen wurde.

Hier ist mein Code,

  • Android-Fehler - Öffnen Failed ENOENT
  • ListView: setItemChecked funktioniert nur mit Standard ArrayAdapter - funktioniert nicht bei der Verwendung von benutzerdefiniertem ArrayAdapter?
  • Android: Video-Ansicht: wie man ein Video auf einer Schleife spielt
  • Gebundenen Service versus gestartet Service auf Android und wie man beides macht
  • Integrieren Sie den ZXing QR Code Scanner ohne den BarCode Scanner zu installieren
  • HorizontalScrollView, Auto-Scroll, um mit Animation zu beenden
  • import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.webkit.WebView; import android.webkit.WebViewClient; import android.webkit.WebChromeClient; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.webkit.DownloadListener; import android.widget.Button; import android.widget.TextView; public class Main extends Activity { WebView webview; Button bt_search; TextView txt_search; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); webview = (WebView) findViewById(R.id.webView); webview.setWebChromeClient(new WebChromeClient()); webview.getSettings().setJavaScriptEnabled(true); webview.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); } }); txt_search = (TextView) findViewById(R.id.song); webview.loadUrl("http://www.google.com"); bt_search = (Button) findViewById(R.id.findit); bt_search.setOnClickListener(new OnClickListener() { public void onClick(View v) { String keyword = txt_search.getText().toString().trim(); if (!keyword.equals("")) { webview.loadUrl("MP3 Sites" + keyword + ".html"); } } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } 

  • Das Herunterladen mehrerer Dateien gleichzeitig in Android-Anwendungen
  • Samsung Galaxy s3 Emulator Einstellungen
  • Analysieren eines Arrays von JSON-Objekten mit Jackson 2.0
  • FloatingActionButton erweitert eine neue Aktivität
  • Java.lang.Void vs void vs Null
  • So finden Sie Android Google Play Services Version
  • 2 Solutions collect form web for “Wie kann ich die Datei mit Webview herunterladen? (Dieser Fall ist komisch)”

    Implementieren Sie einen WebViewClient , der mit Ihrem WebView verwendet werden soll. In it, überschreiben Sie die Methode shouldOverrideUrlLoading , wo Sie überprüfen sollten, ob es eine mp3-Datei ist, und übergeben Sie diese URL an den DownloadManager oder was auch immer Sie verwenden, um die Datei tatsächlich herunterzuladen. Hier ist eine grobe Idee:

      // This will handle downloading. It requires Gingerbread, though final DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); // This is where downloaded files will be written, using the package name isn't required // but it's a good way to communicate who owns the directory final File destinationDir = new File (Environment.getExternalStorageDirectory(), getPackageName()); if (!destinationDir.exists()) { destinationDir.mkdir(); // Don't forget to make the directory if it's not there } webView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading (WebView view, String url) { boolean shouldOverride = false; // We only want to handle requests for mp3 files, everything else the webview // can handle normally if (url.endsWith(".mp3")) { shouldOverride = true; Uri source = Uri.parse(url); // Make a new request pointing to the mp3 url DownloadManager.Request request = new DownloadManager.Request(source); // Use the same file name for the destination File destinationFile = new File (destinationDir, source.getLastPathSegment()); request.setDestinationUri(Uri.fromFile(destinationFile)); // Add it to the manager manager.enqueue(request); } return shouldOverride; } }); 
     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); } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.