efp*_*ies 7 android download-manager
好的,我正在下载文件(图像).我想在下载完成后为图像发送带有本地URI的消息.但有20%的时间我得到这个:
6-01 18:46:39.900: INFO/DownloadManager(412): Initiating request for download 605
06-01 18:46:39.910: WARN/DownloadManager(412): Aborting request for download 605: Trying to resume a download that can't be resumed
06-01 18:46:39.910: INFO/ololo(2826): Okay, I'll broadcast.
06-01 18:46:39.990: WARN/ImageView(2826): Unable to open content: content://downloads/my_downloads/605
java.io.FileNotFoundException: No filename found.
at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:145)...
06-01 18:46:39.990: INFO/System.out(2826): resolveUri failed on bad bitmap uri: content://downloads/my_downloads/605
06-01 18:46:39.990: INFO/ololo(2826): content://downloads/my_downloads/605 was set for android.widget.ImageView@408a2cf0
Run Code Online (Sandbox Code Playgroud)
这是代码
Long downloadId = downloadIds.get(this);
if(downloadId == intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1)) {
DownloadManager.Query query = new DownloadManager.Query();
query.setFilterById(downloadId);
Cursor cursor = downloadManager.query(query);
if(cursor.moveToFirst()) {
switch (cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS))) {
case DownloadManager.STATUS_SUCCESSFUL : {
Log.i("ololo", "Okay, I'll broadcast.");
// Broadcasting
break;
}
case DownloadManager.STATUS_FAILED : {
Log.i("ololo", "Bad, I won't broadcast.");
int reason = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_REASON));
if(reason == DownloadManager.ERROR_CANNOT_RESUME || reason == DownloadManager.ERROR_UNKNOWN) {
// Rerun download
}
break;
}
default:
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
DownloadManager是错误的,无法正常工作.这个错误已经在谷歌提交了一段时间:
https://code.google.com/p/android/issues/detail?id=18462
对于单个文件下载,您可以通过指定要专门为此目的下载的唯一目录来解决此问题,并且只需在DownloadManager.STATUS_SUCCESSFUL中获取该目录中的任何内容.
对于多文件下载,除非您能够在源处重命名文件,否则我暂时无法想到解决方法.
| 归档时间: |
|
| 查看次数: |
5157 次 |
| 最近记录: |