之前的一篇文章讲的是DownloadManger的一些基本用法和参数设置。
这篇文章稍微深入讲解一些用法。
DownloadManager.Query
顾名思义,这个类就是用来查询的。他的一个重要的参数,ID就是上一篇讲到的,downloadManager.enqueue(request);的返回值。
下面我们来看一下这个类的基本用法。
IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);
receiver = new DownloadCompleteReceiver();
registerReceiver(receiver, filter);
class DownloadCompleteReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
long downloaded_id = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
/* Log.d(getPackageName(), "下载完成:" + "downloaded_id =" + downloaded_id + "----" + "download_id=" + download_id1 + "");
Log.d(getPackageName(),"下载完成:"+"downloaded_id ="+downloaded_id+"----" +"download_id="+download_id2+"");
if(download_id1 == downloaded_id){
Log.d(getPackageName(),"下载完成:"+"downloaded_id ="+downloaded_id);
}
if(download_id2 == downloaded_id){
Log.d(getPackageName(),"下载完成:"+"downloaded_id ="+downloaded_id);
}*/
DownloadManager.Query myQuery = new DownloadManager.Query();
myQuery.setFilterById(downloaded_id);
Cursor cursor = downloadManager.query(myQuery);
if (cursor.moveToFirst()) {
int id = cursor.getColumnIndex(DownloadManager.COLUMN_ID);
int media_type = cursor.getColumnIndex(DownloadManager.COLUMN_MEDIA_TYPE);
int media_provider_uri = cursor.getColumnIndex(DownloadManager.COLUMN_MEDIAPROVIDER_URI);
int filename = cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME);
int total_size = cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES);
String download_id = cursor.getString(id);
String file_media_type = cursor.getString(media_type);
String provider_uri = cursor.getString(media_provider_uri);
String name = cursor.getString(filename);
String size = cursor.getString(total_size);
tv_id.setText(download_id);
tv_media_type.setText(file_media_type);
tv_media_uri.setText(provider_uri);
tv_filename.setText(name);
tv_size.setText(size);
}
}
}
上面的Receiver是监听下载完成广播的一个Receiver,下载的代码就不给出。
未完……