下载失败时,DownloadManager游标属性COLUMN_LOCAL_FILENAME为空

时间:2013-02-13 09:31:40

标签: java android download android-download-manager

我正在为我的DownloadManager构建一个后备版,它将重新启动失败的下载。

我坚持vogella's示例构建我的下载管理器功能。

if (c.moveToFirst()) {
int columnIndex = c.getColumnIndex(DownloadManager.COLUMN_STATUS);

...

} else if (DownloadManager.STATUS_FAILED == c.getInt(columnIndex)) { 

         colIndex = c.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME);
         String localFilename = c.getString(colIndex);

}

“失败”的情况正在发挥作用,但我的localFilename变量为null

BTW:COLUMN_URI正在运作。

我是如何访问目标/本地路径或文件名的?

2 个答案:

答案 0 :(得分:5)

DownloadManager.COLUMN_LOCAL_FILENAME字段自API 11起作用,因此如果您使用较旧的API,则colIndex将为-1,这将导致localFilename String为null。

如果你想从URI获取路径

String path = Uri.parse(cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI))).getPath()

答案 1 :(得分:4)

本地文件名为空,因为下载失败。没有本地文件可供参考。

比照。 DownloadManager.html#getUriForDownloadedFile的文件(重点补充):

  

如果文件下载成功,则返回给定下载文件ID的Uri,。否则,返回null