【问题标题】:Android with DownloadManager get total file size带有 DownloadManager 的 Android 获取总文件大小
【发布时间】:2015-09-30 09:39:32
【问题描述】:

我已经研究了所有地方,但没有任何解决方案。我有一个 sn-p 代码,可以在 eclipse 的调试模式下正常运行并获取总文件大小。但是当我运行项目时 sizeOfDownloadingFile 的值只返回-1。请帮帮我,我用 Android 22 编译,在此先感谢。

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

【问题讨论】:

    标签: android file download cursor size


    【解决方案1】:

    如果你在主线程中调用你的代码试试:

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

    当您处于调试模式时,下载器可以正常开始下载并且您有一个有效值,但如果您运行应用程序,通常下载器必须连接到服务器并下载文件,这有时会比执行您的代码花费更多的时间。

    【讨论】:

      【解决方案2】:

      我发现了问题,这是由方法 setFilterById() 处理引起的。将代码更改为此后,我现在可以得到正确的结果,但我推荐 Adam 的代码:

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

      【讨论】:

        猜你喜欢
        • 2012-10-30
        • 1970-01-01
        • 1970-01-01
        • 2016-02-26
        • 2014-03-26
        • 2011-08-28
        • 2011-10-31
        • 2012-05-20
        • 2019-11-14
        相关资源
        最近更新 更多