Android 简单易用的应用更新库
来源:互联网 发布:互动投影软件下载 编辑:程序博客网 时间:2024/06/11 11:58
update
项目地址:czy1121/update
简介:清晰灵活简单易用的应用更新库
清晰灵活简单易用的应用更新库
- 支持断点续传
- 支持静默下载:有新版本时不提示直接下载
- 支持强制安装:不安装无法使用 app
- 支持下载完成后自动安装
- 支持可忽略版本
- 支持 app 启动时强制安装下载好了的更新包
- 支持 POST 请求
- 支持自定义解析服务器返回的数据
- 支持自定义查询/下载
- 支持自定义提示对话框/下载进度对话框
- 支持通知栏进度显示
- 适配 Android 7.0 FileProvider
Gradle
repositories { maven { url "https://jitpack.io" }} dependencies { compile 'com.github.czy1121:update:1.1.1'}
Usage
基本用法
默认情况下,查询请求会需要三个参数: 包名(package), 版本号(version), 渠道(channel) package/version 从应用的 context 获取
// 设置默认更新接口地址与渠道 UpdateManager.setUrl(mCheckUrl, "yyb");
// 进入应用时查询更新UpdateManager.check(context);
// 在设置界面点击检查更新UpdateManager.checkManual(context);
// 如果有已经下载好了的更新包就强制安装,可以在 app 启动时调用UpdateManager.install(context);
假设,包名是ezy.demo.update
,版本号为123
传入地址 http://example.com/check
,传入渠道 yyb
那请求的 url 是 http://example.com/check?package=ezy.demo.update&version=123&channel=yyb
设置请求 url
设置 url 后不会额外添加 package/version/channel 等参数
UpdateManager.create(this).setUrl(mCheckUrl).check();
发送 POST 请求
UpdateManager.create(this).setUrl(mCheckUrl).setPostData("param=abc¶m2=xyz").check();
解析查询结果
查询结果需要解析成 UpdateInfo
public class UpdateInfo { // 是否有新版本 public boolean hasUpdate = false; // 是否静默下载:有新版本时不提示直接下载 public boolean isSilent = false; // 是否强制安装:不安装无法使用 app public boolean isForce = false; // 是否下载完成后自动安装 public boolean isAutoInstall = true; // 是否可忽略该版本 public boolean isIgnorable = true; public int versionCode; public String versionName; public String updateContent; public String url; public String md5; public long size;}
关于 md5
- 有新版本时,url 与 md5 字段为必填
- md5 始终是是 url 所表示的apk 文件内容的 md5,不是 keystore 的 md5
- md5 用于确保安装的是完整正确 apk,防止下载过程中 apk 内容被修改篡改替换
- 不知道如何获取文件 md5 可参考 Update.md5 或 google/baidu
可以定制解析过程
UpdateManager.create(this).setUrl(mCheckUrl).setParser(new IUpdateParser() { @Override public UpdateInfo parse(String source) throws Exception { UpdateInfo info = new UpdateInfo(); // todo return info; }}).check();
定制查询
UpdateManager.create(this).setUrl(mCheckUrl).setChecker(new IUpdateChecker() { @Override public void check(ICheckAgent agent, String url) { HttpURLConnection connection = null; try { connection = (HttpURLConnection) new URL(url).openConnection(); connection.setRequestProperty("Accept", "application/json"); connection.connect(); if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) { agent.setInfo(UpdateUtil.readString(connection.getInputStream())); } else { agent.setError(new UpdateError(UpdateError.CHECK_HTTP_STATUS, "" + connection.getResponseCode())); } } catch (IOException e) { e.printStackTrace(); agent.setError(new UpdateError(UpdateError.CHECK_NETWORK_IO)); } finally { if (connection != null) { connection.disconnect(); } } }}).check();
定制下载
UpdateManager.create(this).setUrl(mCheckUrl).setDownloader(new IUpdateDownloader() { @Override public void download(IDownloadAgent agent, String url, File temp) { new UpdateDownloader(agent, context, url, temp).execute(); }}).check();
更新版本对话框
UpdateManager.create(this).setPrompter(new IUpdatePrompter() { @Override public void prompt(IUpdateAgent agent) { // todo : 根据 agent.getInfo() 显示更新版本对话框,具体可参考 UpdateAgent.DefaultUpdatePrompter }}).check();
没有新版本或出错
UpdateManager.create(this).setOnFailure(new OnFailureListener() { @Override public void onFailure(UpdateError error) { Toast.makeText(mContext, error.toString(), Toast.LENGTH_LONG).show(); }}).check();
显示下载进度
可在通知栏显示下载进度,当 info.isSilent 为 true 显示
默认通知栏进度
UpdateManager.create(this).setNotifyId(998).check();
定制通知栏进度
UpdateManager.create(this).setOnNotificationDownloadListener(new OnDownloadListener() { @Override public void onStart() { // todo: start } @Override public void onProgress(int progress) { // todo: progress } @Override public void onFinish() { // todo: finish }}).check();
定制下载进度的对话框,当 info.isSilent 为 false 显示
UpdateManager.create(this).setOnDownloadListener(new OnDownloadListener() { @Override public void onStart() { // todo: start } @Override public void onProgress(int progress) { // todo: progress } @Override public void onFinish() { // todo: finish }}).check();
阅读全文
1 1
- Android 简单易用的应用更新库
- Android 清晰灵活简单易用的App应用更新库
- Android应用更新库
- Android应用的定时更新
- android 版本更新的应用
- android 版本更新的应用
- 可更新ResultSet的简单应用
- android示例:简单的播放MP3并显示歌词的应用(待更新)
- android sqlite的简单应用(创建,插入,更新,查找,删除等)
- android系统更新应用的添加
- android 应用版本更新,自己的服务器!
- Android平台应用更新的一点想法
- android应用桌面图标不更新的问题
- Android应用的升级更新功能
- 浅谈android应用的版本更新
- 如何更新android应用的包名
- Android实现应用的增量更新\升级
- android 版本更新之JAR的应用
- vue.js学习笔记-11
- Java RMI架构(远程方法调用)
- Spring介绍
- google 手机号码校验库libphonenumber
- 关于数学字符串公式的计算
- Android 简单易用的应用更新库
- 2017暑假训练第十一天
- MySql的优化步骤
- 光耦和继电器
- Python中from import和import的区别?
- 最大熵模型简介------写得很好,
- UVA
- 三、容器--特殊容器
- Java读写锁ReadWriteLock