2016-09-04 61 views
8

Bir Cordova uygulaması ile dosyaları indirmeye çalışıyorum, bu File transfer plugin kullanarak daha küçük dosyalar için çalışıyor, ancak daha büyük dosyalar için android indirme yöneticisini tetiklemek istiyorum. Bu mümkün mü (muhtemelen bir eklenti ile)?Tetikleyici android indir yöneticisi Cordova

İsteğin başlığını değiştirebilmem gerekiyor, bu nedenle 'cordova plugin background download' eklentisi bana yardımcı olmadı.

Düzenleme: Android Download yöneticisini kullanmadan, sorunumu zaten çözdüm. Benim app transfer olacak dosyaların çoğu, çünkü DM tam olarak gerekli değildi tetikleme < 50mb vardır. Bu soru benim olmayan bir lütuf yüzünden çok dikkat çekti. Yine de iyi bir cevabı almak isterken, cevapları test etmek için fazla zamanım yok.

+0

Bu, gereksiniminize uygun ve karşılaştırmalı olarak etkin olan bir eklentidir - https://github.com/fastrde/cordova-plugin-fastrde-downloader – Gandhi

+0

eklenti çatalı, başlık kabiliyetini ekleyin ve bir PR gönderin, böylece orijinal eklenti yararına. – jcesarmobile

+0

@DavidWestern Bu konuda herhangi bir güncelleme var mı? – Gandhi

cevap

6

Gitmenin en iyi yolu, kendi eklentinizi yazmaktır. Cordova eklentileri yazmak kolaydır ve resmi dokümanı takip etmek için yeterlidir. Aynı işlemi yaptık çünkü indirme işlemini özelleştirmek için gerekliydi. Bu yöntemi kullanan bir yerel çağrıya benziyor, çünkü bu kullanıcı ilerlemeyi görebiliyor, iptal edebiliyor, duraklatabiliyor, böylece kullanıcı bunu görebiliyor, iptal edebiliyor, duraklatabiliyor.

Ve kendi eklentinizi kaydettiğinizde bu, aşağıdaki kod ile başlayabilirsiniz:

import android.app.DownloadManager; 
     import android.app.DownloadManager.Request; 

     public class DownloadPlugin extends CordovaPlugin{ 

     private DownloadManager downloadManager; 

     public DownloadPlugin() { 
      downloadManager = (DownloadManager) webView.getContext() 
                   .getSystemService(webView.getContext().DOWNLOAD_SERVICE); 
     } 

     @Override 
     public boolean execute(String action, JSONArray args, 
           CallbackContext callbackContext) throws JSONException { 

      String downloadUrl = args.getString(0); 
      startDownloadForUrl(String downloadUrl); 

     } 

     public void startDownloadForUrl(String downloadUrl){ 
       Request downloadRequest = new Request(downloadUrl); 
       if (accessToken != null) { // we use oauth so this is example of changing download request 
        downloadRequest.addRequestHeader("Authorization", "Bearer " 
          + accessToken); 
       } 
       downloadRequest 
       .setDescription("description") 
       .setDestinationInExternalFilesDir("folderName", "fileName"); 
       downloadManager.enqueue(downloadRequest); 
     } 

     } 
+0

neden bahsettiği ve gönderdiği eklentiyi çatallamıyorsunuz? Daha iyi hale getirmek için bir PR? – jcesarmobile

+0

'cordova eklentisi arka plan indir' kullanmadı DownloadManager (Ben hala kullanmadıklarını kontrol ettim, HttpURLConnection kullanıyorlar). Ve biz BoxManager'ı kullanmak istedik çünkü kutudan çok fazla özelliği var. Şimdi daha önce olmayan birçok eklenti var ve bunların çoğu DM kullanıyor. https://github.com/sgrebnov/cordova-plugin-background-download. Bunun için söylediklerinizi anlamlandırın. 'cordova eklentisi arka plan indir' için resmi "Cordova eklentisi" dir ve onlar sizin için nasıl çalıştığını yıllarca değiştirmeyeceklerdir. – mommcilo

+0

Soruda, 'cordova eklentisi arka plan indir' adlı eklenti, DM'yi kullanan https://github.com/sgrebnov/cordova-plugin-background-download adresine bağlanır. Üstbilgi desteği eklemek için bir PR göndermekten bahsettiğim buydu. Bir çekirdek eklenti olan ve DM kullanmaz, dosya aktarım eklentisi olan – jcesarmobile

1

Bu, gereksiniminize uygun ve karşılaştırmalı olarak etkin olan bir hazır downloader plugin sürümüdür.

Ayrıca Bu dosya indirilir bir bildirim gösterir ve özgün görev için uygun olan başka downloadmanager plugin ise usage linke

0

belirtilen indirmek için çeşitli seçenekler sunar.

Ayrıca bir fork yaptım ve dosya önceden daha önce indirilmişse bir bildirimi yükseltmek için bir yöntem ekledim. Bu, dosya web api yoluyla indirildiğinde ve dosyayı kaydetmeden önce sunucudan yanıtı kontrol etmeniz gerektiğinde gereklidir.