Java 下载失败时,DownloadManager游标属性列\u LOCAL\u FILENAME为空

Java 下载失败时,DownloadManager游标属性列\u LOCAL\u FILENAME为空,java,android,download,android-download-manager,Java,Android,Download,Android Download Manager,我正在为我的DownloadManager构建一个后备方案,它将重新启动失败的下载 我坚持使用示例构建下载管理器功能 if (c.moveToFirst()) { int columnIndex = c.getColumnIndex(DownloadManager.COLUMN_STATUS); ... } else if (DownloadManager.STATUS_FAILED == c.getInt(columnIndex)) { colIndex = c.ge

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

我坚持使用示例构建下载管理器功能

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

}
“failed”-案例正在运行,但我的
localFilename
变量为
null

顺便说一句,
列的URI
正在工作


知道如何访问目标/本地路径或文件名吗?

DownloadManager.COLUMN\u local\u filename字段从API 11开始工作,因此如果使用较旧的API,则colIndex将为-1,这将导致localFilename字符串为空

如果您想从URI获取路径,只需

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

本地文件名为空,因为下载失败。没有可引用的本地文件

请参阅以下文件(增加重点):

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