repositories {
maven { url "https://jitpack.io" }
}
dependencies {
compile 'com.github.czy1121:update:1.1.0'
}複製代碼
基本用法git
默認狀況下,查詢請求會須要三個參數: 包名(package), 版本號(version), 渠道(channel)
package/version 從應用的 context 獲取github
// 設置默認更新接口地址與渠道
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
json
設置請求url服務器
設置url後不會額外添加 package/version/channel 等參數app
UpdateManager.create(this).setUrl(mCheckUrl).check();複製代碼
解析查詢結果maven
查詢結果須要解析成 UpdateInfo ide
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;
}複製代碼
能夠定製解析過程svg
UpdateManager.create(this).setUrl(mCheckUrl).setParser(new IUpdateParser() {
@Override
public UpdateInfo parse(String source) throws Exception {
UpdateInfo info = new UpdateInfo();
// todo
return info;
}
}).check();複製代碼
定製查詢gradle
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();複製代碼