我正在尝试下载一个近200MB的zip
文件。为了让我获得当前下载的字节,我使用下面的代码片段。
while ((cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)) == DownloadManager.STATUS_PENDING) ||(cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)) == DownloadManager.STATUS_RUNNING)) {
downloadedLength = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));
}
每次(cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)
回报我int
7。
我想通过这个来实现的是获得下载进度,直到达到状态SUCCESS
如果我理解正确,您希望在应用内显示进度。
获得游标对象后,基本上可以执行此操作来显示进度。
Cursor c = dm.query(query);
if (c.moveToFirst()) {
int totalSizeIndex = c.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES);
int downloadedIndex = c.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR);
long totalSize = c.getInt(totalSizeIndex);
long downloaded = c.getInt(downloadedIndex);
double progress = 0.0;
if (size != -1) {
progress = downloaded * 100.0 / totalSize;
}
}
已下载* 100.0 / totalSize计算百分比。
7是STATUS值的索引aka列号。
您需要调用cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS))
来获取列的实际值