通过使用DownloadManager,如何从设备中查看所有活动/正在运行的下载?
我的代码:
DownloadManager.Query query = null;
Cursor c = null;
DownloadManager downloadManager = null;
downloadManager = (DownloadManager)m_context.getSystemService(Context.DOWNLOAD_SERVICE);
query = new DownloadManager.Query();
if(query!=null)
{
query.setFilterByStatus(DownloadManager.STATUS_FAILED|DownloadManager.STATUS_PAUSED|DownloadManager.STATUS_SUCCESSFUL|
DownloadManager.STATUS_RUNNING|DownloadManager.STATUS_PENDING);
}
c = downloadManager.query(query);
if(c.moveToFirst())
{
int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));
switch(status)
{
case DownloadManager.STATUS_PAUSED:
break;
case DownloadManager.STATUS_PENDING:
break;
case DownloadManager.STATUS_RUNNING:
break;
case DownloadManager.STATUS_SUCCESSFUL:
break;
case DownloadManager.STATUS_FAILED:
break;
}
}
c.moveToFirst()函数失败(返回false);
DownloadManager是否会询问一些特殊的问题?
答案 0 :(得分:2)
DownloadManager文档说:
请注意,应用程序必须具有INTERNET权限才能使用 这堂课。
我的测试应用只有 android.permission.INTERNET ,并且可以很好地添加下载请求。
// FILL request object
Uri uri = Uri.parse( "http://mysite.com/myfile");
DownloadManager.Request request=new DownloadManager.Request(uri);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false)
.setTitle("my title")
.setDescription("my description")
;
// ADD request to download manager
DownloadManager dm=(DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE);
long id = dm.enqueue(request);
// CHECK request by id
Cursor c = dm.query( new DownloadManager.Query().setFilterById(id) );
if( c.moveToFirst() ){
int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));
switch(status)
{
case DownloadManager.STATUS_PAUSED:
break;
case DownloadManager.STATUS_PENDING:
break;
case DownloadManager.STATUS_RUNNING:
break;
case DownloadManager.STATUS_SUCCESSFUL:
break;
case DownloadManager.STATUS_FAILED:
break;
}
}
要成功下载,还应该有互联网连接,设备存储空间等等。无论如何,下载管理器应该尝试遵守下载请求并向用户解释其结果。