Android项目之APK升级管理
来源:互联网 发布:网络编辑员招聘启事 编辑:程序博客网 时间:2024/06/04 05:33
APK升级采用DownloadManager类,它是系统提供的下载方法,支持断点续传、通知栏显示。
downloadManager = (DownloadManager) application.getSystemService(Context.DOWNLOAD_SERVICE);
DownloadManager.Request 用来执行下载任务
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(newVersionInfo.getDownloadUrl()));request.setMimeType("application/vnd.android.package-archive");//设置文件类型 此参数为apk类型request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, apkName);//外部存储路径,文件名//request.setTitle(“Title”);设置下载中通知栏提示的标题//request.setDescription(“Description”);设置下载中通知栏提示的介绍//request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);表示下载允许的网络类型//request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, apkName);//设置下载路径为系统的下载目录//request.setAllowedOverRoaming(true);允许漫游 默认true//request.addRequestHeader(String header, String value);请求头//request.setDestinationInExternalFilesDir(this,path, name); 上下文,路径,文件名downloadId = downloadManager.enqueue(request);downloadManager.remove(REFERENCE_1, REFERENCE_2, REFERENCE_3);//移除下载
DownloadManager.Query 用来查询下载任务的信息
DownloadManager.Query query = new Query(); query.setFilterById(reference); Cursor myDownload = downloadManager.query(query); if (myDownload.moveToFirst()) { int fileNameIdx = myDownload.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME); //文件名 int fileUriIdx = myDownload.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI); //文件uri int fileSizeIdx = myDownload.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES);//文件大小 int bytesDLIdx = myDownload.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR);//文件下载大小 } myDownload.close();
下载成功后的广播 DownloadManager.ACTION_DOWNLOAD_COMPLETE
class CompleteReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // get complete download id long completeDownloadId = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1); // to do here }};
点击正在下载的notification将会发出广播:DownloadManager.ACTION_NOTIFICATION_CLICKED
文件下载成功后启动安装:
private void installApk(long downloadApkId) { Intent install = new Intent(Intent.ACTION_VIEW); Uri downloadFileUri = downloadManager.getUriForDownloadedFile(downloadApkId); if (downloadFileUri != null) { install.setDataAndType(downloadFileUri, "application/vnd.android.package-archive"); install.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); getApplication().startActivity(install); } else { Log.e("DownloadManager", "download error"); } }
0 0
- Android项目之APK升级管理
- Android 在线升级APK
- android apk 自动升级
- android apk在线升级
- Android 在线升级APK
- android APK升级
- Android apk增量升级
- [android] apk 版本升级
- android在线升级apk
- android APK升级
- android apk 升级代码
- Android小项目之六 apk下载
- 升级Android内置apk版本
- android apk自动升级实现
- android的apk自动检测升级
- android 做apk的升级
- android apk差分升级
- Android APK版本升级设计
- HUD 1232 畅通工程【并查集】
- javaEE工程师学习路线图
- leetcode
- cocosjsb cocostudio坑
- SpringWeb MVC 详细讲解及开发案例
- Android项目之APK升级管理
- 分区表转普通表脚本
- Python各类数据类型转换函数总结
- CSS样式规范整理1
- Java代码优化
- iOS加急审核流程
- 九度OJ-1461:Tempter of the bone
- Au Robotics软件类笔试题
- 使用WKWebView替换UIWebView