2015-09-30 7 views
0

Я исследовал каждый раз, но никакого решения. У меня есть код фрагмента, который запускается и обычно получает общий размер файла в режиме отладки eclipse. Но когда я запускаю проект, значение sizeOfDownloadingFile возвращает только -1. Пожалуйста, помогите мне, я собираюсь с Android 22, спасибо заранее.Android с DownloadManager получить полный размер файла

long id = downloadManager.enqueue(request); 
      Cursor cursor = downloadManager.query(new DownloadManager.Query() 
        .setFilterById(id)); 
      if (!cursor.moveToFirst()) { 
       Log.v("DownloadManagerService", "download list is empty"); 
       return; 
      } 
      int sizeOfDownloadingFile = 0; 
      sizeOfDownloadingFile = cursor.getInt(cursor 
        .getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES)); 
      Log.d("DownloadManagerService", 
        "File size of film " + mFilm.getmTitle() + " is " 
          + sizeOfDownloadingFile); 

ответ

2

Если вы вызываете свой код в основной нити попробовать:

new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       check here size of your downloading file 
      } 
     },500); 

Когда вы находитесь в режиме отладки загрузчика Propably начать загрузку и у вас есть действительное значение, но если вы запускали приложение нормально Загрузчик должны подключитесь к серверу и файлу doanload, иногда это занимает больше времени, чем выполнение вашего кода.

+0

Благодарим за помощь – LeonHeart

1

Я нашел проблему, вызванную обработкой метода setFilterById(). После того, как я меняю код на это, я могу получить правильный результат сейчас, но я рекомендую код Адама:

id = downloadManager.enqueue(request); 
     DownloadManager.Query query = new DownloadManager.Query(); 
     query.setFilterById(id); 
     Thread.sleep(1000); 
     cursor = downloadManager.query(query); 
     if (!cursor.moveToFirst()) { 
      Log.v("DownloadManagerService", "download list is empty"); 
      return; 
     } 
     int size = 0; 
     size = cursor.getInt(cursor 
       .getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES)); 
     Log.v("DOWNLOADING FILE SIZE", "File size of film " + f.getmTitle() 
       + " is " + size); 
     cursor.close(); 
Смежные вопросы