2014-12-26 6 views
0

PhoneGap/Cordova를 사용하여 모바일 앱을 개발 중입니다.
InAppBrowser를 사용하여 Cordova에서 "window.open"메서드를 사용하여 외부 웹 사이트를 표시합니다.Phonegap/Cordova InAppbrowser 파일 다운로드 문제

외부 웹 사이트는 일부 파일 목록과 다운로드 링크를 표시합니다. 다운로드 하이퍼 링크를 클릭하면 모든 브라우저에서 정상적으로 작동합니다.

하지만 Cordova Mobile 앱의 InAppBrowser에서 외부 웹 사이트를 호출하면 해당 페이지의 다운로드 링크가 작동하지 않습니다.

InAppBrowsers를 사용할 때 Cordova API를 사용할 수 없습니다. 이 문제를 어떻게 극복 할 수 있습니까?

업데이트 : ASP.Net에 응답 웹 사이트를 개발 한

. 이 웹 사이트의 기능 중 하나는 파일을 SQL 서버에 바이트로 저장하고 필요할 때 파일로 다운로드하는 것입니다.

다운로드 할 파일 및 옵션 목록을 표시하는 GridView 컨트롤이 있습니다. 다운로드 할 파일을 클릭하면 서버 쪽 코드가 SQL Server에서 파일을 만들고 HTTP 응답을 첨부합니다.

C# 코드 : 데스크탑 브라우저에서이 웹 응용 프로그램을 실행할 때

 Response.Clear(); 
     Response.Buffer = true; 
     Response.Charset = ""; 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     Response.ContentType = contentType; 
     Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName); 
     Response.BinaryWrite(bytes); 
     Response.Flush(); 
     Response.End(); 

은, 그것은 expectedly.File으로 작동이 다운로드됩니다.

Phonegap/Cordova Mobile 앱에서이 웹 사이트를 감쌌습니다.

자바 스크립트 :

window.open(encodeURI("http://example.com/Files.aspx"), '_blank', 'location=no'); 

웹 사이트는 InAppBrowser에서 실행됩니다. 다운로드 파일 http 응답을 처리 할 수 ​​없습니다.

우리는 android/IOS 네이티브 코드를 수정하여이 문제를 극복 할 수 있습니다. 안드로이드/IOS 코드에 액세스 할 권한이 없습니다. IntelXDK를 사용하여 클라우드에서 Android/IOS 앱을 빌드하기 때문에.

다음은 전체적인 호를 제공합니다. in Codyova InAppBrowser, 파일 내용 유형이 포함 된 HTTP 응답을 처리하는 방법?

+0

아이폰 OS

에 대해
appView.setDownloadListener(new DownloadListener() { public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i); } }); 

에서 onCreate

내부 당신 된 .java 파일이 세그먼트

if (clearAllCache) { CookieManager.getInstance().removeAllCookie(); } else if (clearSessionCache) { CookieManager.getInstance().removeSessionCookie(); } inAppWebView.loadUrl(url); 

알고하지 마십시오. 감사. – Sam35

답변

1

InAppBrowser는 다운로드를 허용하지 않습니다. 다운로드가 가능하도록 플러그인을 수정해야합니다.

메소드 이름 private void navigate(String url) {

메소드 public void run() {

이 라인 this.inAppWebView.requestFocus();

다시 동일한 코드 전에

this.inAppWebView.setDownloadListener(new DownloadListener() { 
        public void onDownloadStart(String url, String userAgent, 
          String contentDisposition, String mimetype, 
          long contentLength) { 
         Intent i = new Intent(Intent.ACTION_VIEW); 
         i.setData(Uri.parse(url)); 
         cordova.getActivity().startActivity(i); 
        } 
       }); 

포함 platforms\android\src\org\apache\cordova\inappbrowser 내부 안드로이드

, 내가 이해할 수있을 것이다 상세 explanation.Any의 도움으로 질문을 업데이 트했습니다
+0

고맙습니다.하지만 Intel XDK를 사용하여 클라우드에 PhoneGap App을 구축했습니다. 이렇게하면 Android/IOS의 기본 코드를 수정하거나 사용자 정의 할 수 없습니다. 이 문제를 극복 할 수있는 다른 방법이 있습니까? – Sam35