2012-06-01 18 views
5

Tamam, dosyaları indiriyorum. İndirme tamamlandığında görüntü için yerel URI'ye bir mesaj göndermek istiyorum. Ama zaman% 20'si bu alıyorum:DownloadManager, STATUS_SUCCESSFUL göndericisini indirerek yüklendi

İşte
6-01 18:46:39.900: INFO/DownloadManager(412): Initiating request for download 605 
06-01 18:46:39.910: WARN/DownloadManager(412): Aborting request for download 605: Trying to resume a download that can't be resumed 
06-01 18:46:39.910: INFO/ololo(2826): Okay, I'll broadcast. 
06-01 18:46:39.990: WARN/ImageView(2826): Unable to open content: content://downloads/my_downloads/605 
    java.io.FileNotFoundException: No filename found. 
    at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:145)... 
06-01 18:46:39.990: INFO/System.out(2826): resolveUri failed on bad bitmap uri: content://downloads/my_downloads/605 
06-01 18:46:39.990: INFO/ololo(2826): content://downloads/my_downloads/605 was set for [email protected] 

Long downloadId = downloadIds.get(this); 

if(downloadId == intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1)) { 
    DownloadManager.Query query = new DownloadManager.Query(); 
    query.setFilterById(downloadId); 
    Cursor cursor = downloadManager.query(query); 

    if(cursor.moveToFirst()) { 

     switch (cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS))) { 
      case DownloadManager.STATUS_SUCCESSFUL : { 
       Log.i("ololo", "Okay, I'll broadcast."); 
       // Broadcasting 
       break; 
      } 
      case DownloadManager.STATUS_FAILED : { 
       Log.i("ololo", "Bad, I won't broadcast."); 
       int reason = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_REASON)); 
       if(reason == DownloadManager.ERROR_CANNOT_RESUME || reason == DownloadManager.ERROR_UNKNOWN) { 
        // Rerun download 
       } 
       break; 
      } 
      default: 
       break; 
     } 
    } 
} 
+0

Merhaba, aynı sorunu yaşıyorum. bir şekilde çözdünüz mü, yanlış olanı anladınız mı? –

+0

@TalKanel Sorun SADECE Samsung cihazları ile gerçekleşiyor (Galaxy Tab 10.1 veya 3.2 veya 2.3.3 veya 4.0'da başka bir şey var - bu önemli değil, HTC'ye hiç olmadı). Ben 'DownloadManager' kendi _buggy_ gerçekleştirilmesi olduğunu düşünüyorum. Bu yüzden takım liderim kendi farkındalığını yazdı ve iyi çalışıyor. – efpies

+0

çok kötü, P7510 ve P5110 (GALAXY TAB 10.1 ONE ve TWO) samsung tabletlerinde kullanmam gerekiyor, ve bahsettiğiniz belirli işletim sistemi sürümleri üzerinde çalışmam gerekiyor .. bu yüzden kendi çözümümüzü uygulamak zorundayım. –

cevap

5

DownloadManager arabası ve düzgün çalışmaz kodu olduğunu. Bu hata bir süre önce Google ile açılmıştı:

tek dosya indirmek için

https://code.google.com/p/android/issues/detail?id=18462

, özel olarak bu amaç için indirmek ve sadece bu dizinde olsun ne olursa olsun almak için eşsiz bir dizin belirterek bu geçici çözüm olabilir DownloadManager.STATUS_SUCCESSFUL üzerinde.
Çok dosya karşıdan yüklemeler için, kaynakta dosyaları yeniden adlandırma yeteneğiniz olmadıkça şu an için bir çözüm düşünemiyorum.

+0

Bunun sizin durumunuzda çalışacağını düşünüyorum: http://papaya-backend.net/2013/04/12/why-http-etag-header-may-cause-your-downloading-apps-on-android-failed/ – CoDe

+0

Evet, HTTP ETag'larını kullanmak muhtemelen bu sorunu çözecektir. Bununla birlikte, HTTP belirtimlerinde HTTP ETag'larının kullanımı isteğe bağlıdır ve bu nedenle, bu sorunları çözmek için ETag'ları kullanarak, ETags desteğini eklemek için web sunucusuna doğrudan yönetici erişimine sahip olma durumuna bağlıdır. Yine de, ETag desteği olmadan çalışmadığı için DownloadManager'ın buggy olduğunu iddia ediyorum. – Phileo99

+0

Biraz benzer bir problemle karşılaşıyorum ... indirme çalıştırmak için STATUS_FAILED alıyorum ... neden herhangi bir fikriniz var mı? – CoDe

İlgili konular