DownloadUtil
来源:互联网 发布:淘宝找客户要好评 编辑:程序博客网 时间:2024/06/07 18:39
在apk版本升级的时候以前都是起一个service然后处理,偶然发现这个DownloadManager
网上百度了一下学习下
参考学习资料
http://www.jianshu.com/p/6816977bfdeb
单位项目中的工具类,感觉写的不好,先马克在这
public class DownloadUtil { private DownloadManager mDownloadManager; private Context mContext; private long downloadId; public DownloadUtil(Context context) { mContext = context; } public void download(String url) { final String packageName = "com.android.providers.downloads"; int state = mContext.getPackageManager().getApplicationEnabledSetting(packageName); //检测下载管理器是否被禁用 if (state == PackageManager.COMPONENT_ENABLED_STATE_DISABLED || state == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER || state == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED) { AlertDialog.Builder builder = new AlertDialog.Builder(mContext).setTitle("温馨提示").setMessage ("系统下载管理器被禁止,需手动打开").setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); try { Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.setData(Uri.parse("package:" + packageName)); mContext.startActivity(intent); } catch (ActivityNotFoundException e) { Intent intent = new Intent(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS); mContext.startActivity(intent); } } }).setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); } else { DownloadManager manager = (DownloadManager) mContext .getSystemService(Context.DOWNLOAD_SERVICE); DownloadManager.Request request = new DownloadManager.Request( Uri.parse(url)); request.setTitle("丫丫学车下载中..."); request.setDescription(""); request.allowScanningByMediaScanner();// 设置可以被扫描到 request.setVisibleInDownloadsUi(true);// 设置下载可见 String fileName = url.substring(url.lastIndexOf("/"));// 解析fileName request.setDestinationInExternalPublicDir( Environment.DIRECTORY_DOWNLOADS, fileName);// 设置下载位置,sdcard/Download/fileName long refernece = manager.enqueue(request);// 加入下载并取得下载ID SharedPreferences sPreferences = mContext .getSharedPreferences("downloadplato", 0); sPreferences.edit().putLong("plato", refernece).commit();//保存此次下载ID } }// private BroadcastReceiver mReceiver = new BroadcastReceiver() {// @Override// public void onReceive(Context context, Intent intent) {// checkStatus();// }// }; /** * 检查下载状态 */// private void checkStatus() {// mContext.unregisterReceiver(mReceiver);// DownloadManager.Query query = new DownloadManager.Query();// query.setFilterById(downloadId);// Cursor cursor = mDownloadManager.query(query);// if (cursor.moveToFirst()) {// int status = cursor.getInt(cursor.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:// File apkFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "yayaxueche.apk");// PackageUtil.installAPK(mContext,apkFile);// break;// //下载失败// case DownloadManager.STATUS_FAILED:// Toast.makeText(mContext, R.string.DownLoadErr, Toast.LENGTH_SHORT).show();// break;// }// }// cursor.close();// }}
调用方式
DownloadUtil downloadUtil = new DownloadUtil(MainActivity.this); downloadUtil.download(HttpUrlConstants.SERVER_RESOUSE_URL + url);
感觉还是
http://www.jianshu.com/p/6816977bfdeb
这个链接里边写的比较好一点
感觉downLoadManager不是很还用,不如起一个service
学习资料
http://www.jianshu.com/p/2c57efe49ef2
https://github.com/shuhaoSCode/AndroidUpdate
阅读全文
0 0
- DownLoadUtil
- DownloadUtil
- 系统工具类(DownloadUtil)
- [收藏]iPhone屏幕尺寸、分辨率及适配
- 1017. A除以B (20)
- java操作pdf itext入门
- web前端技术开发PC端程序
- 20171017学习笔记Selenium 2 第四章WebDriver API 4.8定位一组元素4.9多表单切换4.10多窗口切换
- DownloadUtil
- 阿里首推“数据安全合作伙伴计划” 构建数据安全生态
- Tomcat 何时解压war包
- 极光推送 状态栏图标显示不全(原创)
- 1124 字符统计 C++/C DEV-C++
- UPX 教程
- lora无线水表技术和NB-IOT无线水表相比,有什么不同?
- 2017住博会圆满落幕北京毕加索公司应邀参会演讲
- 数据结构实战java实现二叉查找树