2016-06-02 5 views
0

InAppBrowser에서 외부 웹 사이트를 여는 앱이 있습니다. 웹 사이트는 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를 다운로드 할 수 없다는 것을 알고 있습니다. 사용자가 파일을 클릭하고 인 텐트 시스템을 사용하여 다운로드하거나 크롬으로 열거 나 제공 한 플러그인을 사용할 때 "감지"하고 싶습니다. . 하지만 다운로드 링크를 사용하는 방법을 모르겠습니다. 내 질문을 예제 링크로 업데이트했습니다. – 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