Ich habe eine Webansicht in meiner Android-Anwendung. Wenn der Benutzer zur Webansicht geht und auf einen Link klickt, um eine Datei herunterzuladen, geschieht 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 aktiviere ich den Download in einer Webansicht? Wenn ich die Webansicht deaktiviere und die Absicht aktiviere, die URL aus der Anwendung in den Browser zu laden, funktioniert der Download nahtlos.
String url = "my url";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
Kann mir hier jemand helfen? Die Seite wird ohne Probleme geladen, aber der Link zu einer Bilddatei auf der HTML-Seite funktioniert nicht ...
android
webview
download
attachment
Jay Mayu
quelle
quelle
Webview
Unterklasse verwenden, die Downloads usw. automatisch verarbeitet: github.com/delight-im/Android-AdvancedWebViewAntworten:
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); } });
Beispiellink: Download der Webview-Datei - Danke @ c49
quelle
webView.setDownloadListener()
funktioniert einwandfrei, wenn keine Benutzerauthentifizierung erforderlich ist. Wenn ich jedoch eine Datei von Google Drive oder anderen Quellen herunterlade, für die eine Benutzerauthentifizierung erforderlich ist, wird eine Datei heruntergeladen, es sind jedoch keine Daten vorhanden. @ user370305 können Sie auch helfen.Probieren Sie es aus. Nachdem ich viele Beiträge und Foren durchgesehen hatte, fand ich dies.
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 ein (Die Datei AndroidManifest.xml).
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- for your file, say a pdf to work -->
Hoffe das hilft. Prost :)
quelle
final String filename= URLUtil.guessFileName(url, contentDisposition, mimetype);
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(); }});
quelle
Versuchen Sie es mit dem Download-Manager, mit dem Sie alles herunterladen können, was Sie möchten, 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); }
quelle