之前用的友盟更新,但是友盟最近自動跟新業(yè)務要停止服務了,所以就自己寫了這套自動更新的代碼使用起來特別簡單,幾行代碼就可以快速集成
?
GITHUB源碼:https://github.com/qiushi123/AutomaticUpdate
?
先看效果圖
1,進入應用更新彈窗,這個可以自定義(詳看代碼)
2,可以在應用中查看下載進度,也可以暫停下載
3,下載的通知也會在通知欄里顯示
4,下載完成以后可以自動安裝
使用步驟
一,添加類庫
?
compile 'com.lzy.net:okhttputils:1.6.7'
compile 'com.lzy.net:okhttpserver:0.1.7' //擴展了下載管理和上傳管理,根據需要添加
二,全局配置
一般在 Aplication,或者基類中,只需要調用一次即可,可以配置調試開關,全局的超時時間,公共的請求頭和請求參數等信息
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", "這里支持中文參數");
//必須調用初始化
OkHttpUtils.init(this);
//以下都不是必須的,根據需要自行選擇
OkHttpUtils.getInstance()//
.debug("OkHttpUtils") //是否打開調試
.setConnectTimeout(OkHttpUtils.DEFAULT_MILLISECONDS) //全局的連接超時時間
.setReadTimeOut(OkHttpUtils.DEFAULT_MILLISECONDS) //全局的讀取超時時間
.setWriteTimeOut(OkHttpUtils.DEFAULT_MILLISECONDS) //全局的寫入超時時間
// .setCookieStore(new MemoryCookieStore())//cookie使用內存緩存(app退出后,cookie消失)
.setCookieStore(new PersistentCookieStore()) //cookie持久化存儲,如果cookie不過期,則一直有效
.addCommonHeaders(headers) //設置全局公共頭
.addCommonParams(params); //設置全局公共參數
}
}
三,實現(xiàn)下載更新
這里只貼出部分代碼,詳細代碼可以查看項目里的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