2014-12-26 3 views
0

Я разрабатываю мобильное приложение с помощью PhoneGap/Cordova.
Я использую InAppBrowser для отображения внешнего веб-сайта с использованием метода «window.open» в Кордове.Phonegap/Cordova InAppbrowser File Скачать вопрос

Внешний веб-сайт отображает список файлов и ссылки для скачивания. Когда я нажимаю гиперссылки для загрузки, он отлично работает во всех браузерах.

Но когда я вызываю этот внешний сайт из InAppBrowser в приложении Cordova Mobile, ссылки для скачивания на этой странице не работают.

Мы не можем использовать API Cordova при использовании InAppBrowsers. Как я могу решить эту проблему?

UPDATE:

Я разработал Отзывчивый веб-сайт в 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.

Javascript:

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

Сайт будет работать на InAppBrowser. Он не смог обработать HTTP-ответ файла загрузки.

Мы можем решить эту проблему, изменив собственные коды android/IOS. У меня нет доступа к коду android/IOS. Потому что я использую IntelXDK для сборки приложения Android и IOS в облаке.

Ниже приводится общая проблема. в Кордове InAppBrowser, Как обрабатывать ответ Http, содержащий типы содержимого файлов?

+0

Я обновил этот вопрос с подробно explanation.Any помощь будет оценена. Благодарю. – Sam35

ответ

1

InAppBrowser не разрешает загрузку. Вам нужно будет изменить плагин, чтобы он мог его загрузить.

для андроид, внутри platforms\android\src\org\apache\cordova\inappbrowser

имя метода private void navigate(String url) {

включают

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); 
        } 
       }); 

до этой линии this.inAppWebView.requestFocus();

снова же кода в методе public void run() {

после этого сегмента

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

      inAppWebView.loadUrl(url); 

в файле .java внутри OnCreate

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); 
        } 
       }); 

Не знаю прошивкой

+0

Спасибо. Но я использую Intel XDK для создания приложения PhoneGap в Cloud. Таким образом, невозможно изменить/настроить собственные коды для android/IOS. Есть ли другие способы преодолеть эту проблему? – Sam35

Смежные вопросы