2016-06-02 16 views
0

Ich habe eine App, die eine externe Webseite in InAppBrowser öffnet. Die Website verwendet Java Server Pages und Java Server Faces. Ich möchte feststellen, wann der Benutzer eine Datei herunterladen möchte und ihn mit der Vorsatzauswahl auffordern/die Datei herunterladen/die Datei in Chrome öffnen.Cordova InAppBrowser Download-Datei von JSP-Seite

Das Problem ist, dass nichts passiert, wenn ich auf eine Datei klicken, versuchte ich auch eine DownloadListener Zugabe, aber es wird nie genannt. Die Urls enthält keine Erweiterung, also kann ich es nicht, dass erkennen, stattdessen alle Anfragen durch einen POST auf die aktuelle Seite mit einigen Formulardaten vorgenommen werden, und die Antwort hat die Header:

Content-Disposition:attachment;filename=somefilename.xlsx 
Content-Type:application/octet-stream 
Transfer-Encoding:chunked 
X-FRAME-OPTIONS:SAMEORIGIN 
X-Powered-By:Servlet/3.0 JSP/2.2 
X-Powered-By:JSF/2.0 

Ich kann keine Möglichkeit finden, das funktioniert zu bekommen. Auf iOS öffnet sich die Datei auf einer neuen Seite, genau wie im Browser, aber auf Android passiert nichts.

Ich muss InAppBrowser verwenden, da die Aufgabe der App darin besteht, eine App für eine bestehende Website bereitzustellen, und die Verwendung eines iFrames keine Lösung darstellt, da sie keine Kreuzherkunftsanforderungen zulassen.

aktualisieren
Dies ist, wie der Download-Link wie folgt aussieht:

<form id="j_idt181:0:j_idt196" name="j_idt181:0:j_idt196" method="post" action="/somepathhere/portal.xhtml" enctype="application/x-www-form-urlencoded"> 
<input type="hidden" name="j_idt181:0:j_idt196" value="j_idt181:0:j_idt196"> 
    <a href="#" onclick="something.jsfcljs(document.getElementById('j_idt181:0:j_idt196'),{'j_idt181:0:j_idt196:j_idt197':'j_idt181:0:j_idt196:j_idt197'},'');return false"> 
     <img src="/somepathhere/javax.faces.resource/excel.png.xhtml?ln=img" style="width:30px; height: 30px; " title="Download"> 
      Download 
     </img> 
     <input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="-5463575505694988987:906233489912842961" autocomplete="off"> 
     </input> 
    </a> 
</input> 

Antwort

0

Sie Dateien über das InAppBrowser nicht herunterladen können. Ich würde vorschlagen, ein Plugin wie das File Transfer Plugin zu verwenden, um die Datei über die App asynchron herunterzuladen. Ich vermute, dass die JSP Website, die Sie treffen wird <input type="file />" die doesn't really work mit Handy verwenden.

+0

Ich weiß, ich kann nicht durch den InAppBrowser herunterladen, ich möchte nur "erkennen", wenn der Benutzer eine Datei klickt und irgendwie das Intent-System verwendet, um es herunterzuladen, oder öffnen Sie es einfach in Chrom oder verwenden Sie das Plugin . Aber ich habe keine Ahnung, wie man den Downloadlink benutzt. Ich habe meine Frage mit einem Beispiellink aktualisiert. – Xzya

+0

Die Kommunikation mit der App aus dem InAppBrowser ist möglicherweise nicht möglich. Ich habe kein Beispiel gesehen, dass jemand das jemals gemacht hat. Das einzige, was ich bin mir dessen bewusst sind die Ereignisse, die die InApprowser Versand wird: 'loadstart',' loadstop', 'loaderror' und' exit'. – johnborges

+0

ich den Quellcode von InAppBrowser bearbeiten könnte, gibt es ein paar Methoden, die hilfreich sein könnten, aber ich habe keine nützliche Art und Weise ihrer Verwendung gefunden. https://developer.android.com/reference/android/webkit/WebView.html#loadUrl(java.lang.String) https://developer.android.com/reference/android/webkit/WebViewClient.html# shouldOverrideUrlLoading (android.webkit.WebView,% 20java.lang.String) – Xzya

Verwandte Themen