2016-06-02 17 views
0

InAppBrowserで外部Webサイトを開くアプリがあります。このWebサイトでは、Java Server PagesおよびJava Server Facesを使用しています。私は、ユーザーがファイルをダウンロードして、そのファイルをダウンロードするか、そのファイルをダウンロードするか、またはそのファイルをChromeで開くかを選択したいと思っています。Cordova InAppBrowser JSPページからファイルをダウンロード

問題は、ファイルをクリックしても何も起こらず、DownloadListenerを追加しようとしましたが、決して呼び出されません。 URLは任意の拡張子が含まれていないので、私はそれでそれを検出することができない、その代わり、すべての要求が何らかの形でデータを現在のページへのPOSTによって行われ、応答はヘッダを持っています

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 

私はこれを動作させる方法を見つけることができません。 iOSでは、ファイルはブラウザのように新しいページで開きますが、Androidでは何も起こりません。

InAppBrowserを使用する必要があるのは、アプリの役割が既存のウェブサイトにアプリを提供することであり、iframeを使用することはクロスオリジンのリクエストを許可しないため解決策ではないからです。

<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> 

答えて

0

あなたはInAppBrowserを介してファイルをダウンロードすることができません。

更新
これは、ダウンロードリンクがどのように見えるかです。私は、File Transfer Pluginのようなプラグインを使って、アプリケーションを通してファイルを非同期にダウンロードしようと提案します。私はあなたが打っているJSPサイトが<input type="file />"を使用していると推測しています。doesn't really workはモバイルです。

+0

私はInAppBrowserをダウンロードできないことは知っていますが、ユーザーがファイルをクリックしてインテントシステムを使用してダウンロードしたり、Chromeで開いたり、提供したプラグインを使用すると。しかし、私はどのようにダウンロードリンクを使用するか分かりません。私は例のリンクで質問を更新しました。 – Xzya

+0

InAppBrowser内からアプリに通信することができない場合があります。私は誰もこれをやっている例は見ていない。私が知っている唯一の事は、InApprowserが送出するイベント、 'loadstart'、' loadstop'、 'loaderror'、' exit'です。 – johnborges

+0

InAppBrowserのソースコードを編集することができますが、参考になる可能性のあるいくつかのメソッドがありますが、それらを使用する便利な方法が見つかりませんでした。 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

関連する問題