WebView - kann die Datei nicht herunterladen, ohne sie zweimal anzufordern?

8

Wenn ich mit DownloadListener zuhöre, erhalte ich die URL, die ich anfordern muss, nachdem der Browser sie bereits angefordert hat . Der Browser hat bereits eine Verbindung zur URL geöffnet (und weiß, dass dies ein Download ist), warum kann er mir die Verbindung nicht geben?

Ich habe auch versucht, eine benutzerdefinierte WebViewClient der WebView zuzuweisen und shouldOverrideUrlLoading zu verwenden, um URLs zu fangen, bevor sie angefordert werden. Um Dateien auf diese Weise herunterzuladen, fordere ich jede URL vor dem Browser an und durch den Inhaltstyp entscheide ich, ob ich sie herunterladen möchte oder nicht, wenn es dann von der bereits geöffneten Verbindung heruntergeladen wird, sonst schließe ich die Verbindung und befehle die Browser, um es zu laden, und der Browser ... fordert es erneut an. Plus, in shouldOverrideUrlLoading Mir wurde nicht gesagt, welche Methode und welche Cookies ich verwenden soll, um die angegebene URL anzufordern.

Wie kann ich nicht unnötigerweise zweimal nachfragen und dennoch Dateien mit WebView herunterladen?

    
Eli Revah 03.08.2012, 19:03
quelle

3 Antworten

1

Eine einfache Lösung besteht darin, sie so zu modifizieren, dass sie nur heruntergeladen wird, ohne den Benutzer auf der Grundlage des Inhaltstyps zur Bestätigung aufzufordern. Stattdessen müssen Sie einfach eine Schaltfläche zum Abbrechen des Downloads anklicken.

    
AJMansfield 14.09.2012 20:49
quelle
1

Warum nicht einfach die URL verwenden, um es mit Outputstream herunterzuladen? Hier ist ein Beispiel:

%Vor%     
ceptno 14.09.2012 22:18
quelle
0

Möchten Sie die Arbeit des Browsers wirklich unterbrechen? Es verwendet multy-thread zum Herunterladen mehrerer URLs und verwaltet auch sein eigenes Dateisystem, um Cookies für diese URLs zu erstellen und er weiß, wann er sie löschen und aktualisieren muss.

Bist du sicher?

    
Ilya Gazman 14.09.2012 11:46
quelle