之前用的友盟更新,但是友盟最近自動(dòng)跟新業(yè)務(wù)要停止服務(wù)了,所以就自己寫了這套自動(dòng)更新的代碼使用起來(lái)特別簡(jiǎn)單,幾行代碼就可以快速集成
?
GITHUB源碼:https://github.com/qiushi123/AutomaticUpdate
?
先看效果圖
1,進(jìn)入應(yīng)用更新彈窗,這個(gè)可以自定義(詳看代碼)
2,可以在應(yīng)用中查看下載進(jìn)度,也可以暫停下載
3,下載的通知也會(huì)在通知欄里顯示
4,下載完成以后可以自動(dòng)安裝
使用步驟
一,添加類庫(kù)
?
compile 'com.lzy.net:okhttputils:1.6.7'
compile 'com.lzy.net:okhttpserver:0.1.7' //擴(kuò)展了下載管理和上傳管理,根據(jù)需要添加
二,全局配置
一般在 Aplication,或者基類中,只需要調(diào)用一次即可,可以配置調(diào)試開關(guān),全局的超時(shí)時(shí)間,公共的請(qǐng)求頭和請(qǐng)求參數(shù)等信息
public class GApp extends Application {
@Override
public void onCreate() {
super.onCreate();
HttpHeaders headers = new HttpHeaders();
headers.put("commonHeaderKey1", "commonHeaderValue1"); //所有的 header都不支持中文
headers.put("commonHeaderKey2", "commonHeaderValue2");
HttpParams params = new HttpParams();
params.put("commonParamsKey1", "commonParamsValue1"); //所有的 params都 支持 中文
params.put("commonParamsKey2", "這里支持中文參數(shù)");
//必須調(diào)用初始化
OkHttpUtils.init(this);
//以下都不是必須的,根據(jù)需要自行選擇
OkHttpUtils.getInstance()//
.debug("OkHttpUtils") //是否打開調(diào)試
.setConnectTimeout(OkHttpUtils.DEFAULT_MILLISECONDS) //全局的連接超時(shí)時(shí)間
.setReadTimeOut(OkHttpUtils.DEFAULT_MILLISECONDS) //全局的讀取超時(shí)時(shí)間
.setWriteTimeOut(OkHttpUtils.DEFAULT_MILLISECONDS) //全局的寫入超時(shí)時(shí)間
// .setCookieStore(new MemoryCookieStore())//cookie使用內(nèi)存緩存(app退出后,cookie消失)
.setCookieStore(new PersistentCookieStore()) //cookie持久化存儲(chǔ),如果cookie不過(guò)期,則一直有效
.addCommonHeaders(headers) //設(shè)置全局公共頭
.addCommonParams(params); //設(shè)置全局公共參數(shù)
}
}
三,實(shí)現(xiàn)下載更新
這里只貼出部分代碼,詳細(xì)代碼可以查看項(xiàng)目里的MainActivity類
case R.id.sure_text:
initNotify();
downloadInfo = downloadManager.getTaskByUrl(apkUrl);
notifyLayout.setVisibility(View.GONE);
downloadLayout.setVisibility(View.VISIBLE);
if (downloadInfo == null) {
downloadManager.addTask(apkUrl, listener);
} else {
downloadManager.removeTask(downloadInfo.getUrl());
downloadSize.setText("--M/--M");
netSpeed.setText("---/s");
tvProgress.setText("--.--%");
pbProgress.setProgress(0);
download.setText("下載中");
downloadManager.addTask(apkUrl, listener);
}
break;
?
本文摘自 :https://blog.51cto.com/u