Android Webview: Download-Dateien wie Browser tun

8

Ich arbeite an einer Android-App mit einem Webview, das auf eine dynamische Website eines anderen Teams verweist.
Wenn ich eine Datei herunterlade (meist dynamisch umgeleitet PDF und ZIP) bekomme ich nur eine Datei im Download-Ordner, die HTML-Code enthält mit der Meldung "Benutzer darf die Datei nicht lesen" , egal wie ich den Download implementiere, habe ich versucht:

  1. DownloadManager
  2. Intent (externen Browser erlauben, den Download zu verwalten)
  3. "von Hand" (AsyncTask und httpconnection ...)

alle mit den gleichen Ergebnissen.

Das Navigieren mit normalen Browsern funktioniert problemlos, sowohl auf Desktop-PCs als auch auf Android- und iOS-Geräten .

Warum sollte webview keinen Zugriff auf Dateien haben?

Kann ein Sitzungsproblem auftreten? http-Port?
Ich brauche wirklich ein paar Ideen ...

Ein weiterer Tipp: Wenn Sie zweimal eine Datei von demselben Link herunterladen, wird der Link auf die gleiche Datei umgeleitet, führt jedoch zu zwei verschiedenen Dateinamen ...


BEARBEITEN Anstatt das webView auf die Web-App zu richten, habe ich versucht, auf eine gemeinsame Webseite mit einer Link-Umleitung zu zeigen, um eine andere Datei herunterzuladen, nun, einfach Es klappt.


Hier sind die Parameter webview.setDownloadListener - onDownloadStart() :

%Vor%

Hier ist ein Code

%Vor%



BEARBEITEN II

Hier ist der Code, den ich benutze, wenn ich versuche, Dateien "von Hand" herunterzuladen:

onDownloadStart () ist, wo ich downloadFileAsync ():

%Vor%

und das ist die AsyncTask:

%Vor%

aus So laden Sie eine PDF-Datei von einem dynamische URL in einer Webansicht
Danke

    
j.c 30.10.2015, 11:06
quelle

3 Antworten

22

Endlich habe ich beschlossen, nach dem zu suchen DownloadHandler aus dem Android Stock Browser-Code . Der einzige erkennbare Mangel in meinem Code war Cookie (!!!).

Hier ist meine letzte Arbeitsversion (DownloadManager-Methode):

%Vor%     
j.c 03.11.2015, 14:40
quelle
0
%Vor%

Danke jc.c für deine Antwort Sie haben ); am Ende des Codes vergessen.

    
Sumit kumar 12.05.2017 16:19
quelle
0

AsyncTask zum manuellen Abrufen des Dateinamens (Sie können dieser Klasse zusätzlichen Code hinzufügen):

%Vor%

DownloadListener (es ist eine stabile Version, ändere es nicht):

%Vor%     
Alexander Savin 26.11.2017 17:11
quelle