Android中的DownloadManager

 DownloadManager是Android为开发者提供的一个后台应用组件,它经过Http层进行文件的下载任务.     1:使用          首先要在AndroidManifest.xml中申请访问DownloadManager的权限           <permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>          添加一个下载任务:          ContentValues values = new ContentValues();          values.put(Downloads.URI, url);//指定下载地址         values.put(Downloads.COOKIE_DATA, cookie);//若是下载Server须要cookie,设置cookie         values.put(Downloads.VISIBILITY,Downloads.VISIBILITY_HIDDEN);//设置下载提示是否在屏幕顶部显示         values.put(Downloads.NOTIFICATION_PACKAGE, getPackageName());//设置下载完成以后回调的包名         values.put(Downloads.NOTIFICATION_CLASS, DownloadCompleteReceiver.class.getName());//设置下载完成以后负责接收的Receiver,这个类要继承BroadcastReceiver              values.put(Downloads.DESTINATION,save_path);//设置下载到的路径,这个须要在Receiver里自行处理         values.put(Downloads.TITLE,title);//设置下载任务的名称         this.getContentResolver().insert(Downloads.CONTENT_URI, values);//将其插入到DownloadManager的数据库中,数据库会触发修改事件,启动下载任务    2:如何为DownloadManager设置代理,好比Wap              values.put(Downloads.PROXY_HOST,"10.0.0.172");             values.put(Downloads.PROXY_PORT,"80");   3:如何在下载过程当中监听下载任务      能够经过监听数据库来实现     DownloadsChangeObserver mDownloadObserver=new DownloadsChangeObserver(Downloads.CONTENT_URI);     private class DownloadsChangeObserver extends ContentObserver {         public DownloadsChangeObserver(Uri uri) {             super(new Handler());         }         @Override         public void onChange(boolean selfChange) {             //查询须要监听的字段            //好比要监听实时下载进度,查看当前下载状态:是否已经断开,或者下载失败等等            StringBuilder wherequery = new StringBuilder(Downloads.TITLE);             wherequery.append("=");             wherequery.append("'");             wherequery.append(mTitle);             wherequery.append("'");            mDownloadCursor =mContext.getContentResolver().query(Downloads.CONTENT_URI, new String[] {Downloads.TITLE, Downloads.STATUS, Downloads.CURRENT_BYTES,}, wherequery.toString(), null,orderBy);                     int mSizeColunmId=mDownloadCursor.getColumnIndexOrThrow(Downloads.CURRENT_BYTES);               mDownloadCursor.moveToFirst();                 int size=mDownloadCursor.getInt(mSizeColunmId);        } }   4:如何删除下载记录     private void deleteHistory(String title)//删除掉指定名称的下载记录     {          StringBuilder whereDelete = new StringBuilder(Downloads.TITLE);         whereDelete.append("=");         whereDelete.append("'");         whereDelete.append(str);         whereDelete.append("'");         this.getContentResolver().delete(Downloads.CONTENT_URI,whereDelete.toString(), null);     }   
相关文章
相关标签/搜索