bigapple之utils-update部分apk自动下载安装
2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
1、前奏
經(jīng)常有這樣一個需求,就是開發(fā)安卓項目時,要升級后續(xù)版本。實現(xiàn)方式有很多種,大多的實現(xiàn)步驟就是放一份版本信息在服務(wù)器端,然后需要檢測的時候,就拿本地apk的版本跟服務(wù)器的版本對比,如果不是最新的,就提示用戶進行升級操作。需求來了,升級操作就需要我們先下載apk,然后調(diào)用安卓API進行自動替換安裝。我們的這個update模塊就是提供給你自動下載和安裝一步到位。當(dāng)然是否需要升級的版本比較,還是得你自己做。
2、廢話少說先貼上使用方法
UpdateManager updateManager = new UpdateManager(Main.this); updateManager.setUpdateCancelListener(new UpdateCancelListener() {@Overridepublic void updateCancel(CancelEvent cancelEvent) {notifyCanGotoLoginActivity();} }); updateManager.setUpdateOkListener(new UpdateOkListener() {@Overridepublic boolean updateOk() {return true;//表示操作更新} }); updateManager.doUpdate(downloadUrl, Constants.UPDATE_APK_PATH + Constants.APK_NAME, updateText);對,就是這么簡單。那個doUpdate方法的第一參數(shù)表示你要下載的apk網(wǎng)絡(luò)地址。第二個參數(shù)表示你下載下來的apk的保存路徑。第三個參數(shù),顧名思義,就是在提示用戶下載的提示用語。
其中上面的執(zhí)行結(jié)果是,跳出一個對象選擇框,這個選擇框會提示用戶是否進行更新。如果用戶選擇取消,就會被UpdateCancelListener事件監(jiān)聽到,上面就是跳轉(zhuǎn)去登錄界面,這里邏輯自己寫。如果用戶點擊了確定,就會被UpdateOkListener事件監(jiān)聽到。UpdateOkListener中的updateOk方法有個返回結(jié)果需要你返回。你可以在這個事件里做些判斷收尾操作。如果你返回true,那么就系統(tǒng)就會執(zhí)行更新操作。接下來的事情就不用你管了。如果你返回false,系統(tǒng)就不會去執(zhí)行更新操作。那你就可以自己跳轉(zhuǎn)到相應(yīng)界面去即可。
3、上面的doUpdate方法調(diào)用會提示用戶是否下載安裝。如果不想跳出對話框提示用戶是否進行下載安裝。而直接去下載安裝,就可以直接這樣調(diào)用:
UpdateManager updateManager = new UpdateManager(Main.this); updateManager.doDownloadInstall(downloadUrl, Constants.UPDATE_APK_PATH + Constants.APK_NAME, updateText); 兩個參數(shù)跟上面的一樣。順便說一句,想使用更詳細的配置,可以使用UpdateConfig對象作為參數(shù)傳入。
4、特別注意
這個更新工具中使用了Handler的消息機制。而安卓默認(rèn)除開UI線程,其他線程是不開啟這個消息機制的。所以,在是使用前后開啟一下。Looper.prepare();...中間的代碼就是上面的代碼...Looper.loop();你懂的吧。Looper.loop();后面的代碼不會被馬上執(zhí)行這個你應(yīng)該知道的吧,所以要小心哈。
源碼在github上有:https://github.com/bigapple520520/bigapple? ? ?也可以加QQ群:159392353不過我也是個苦逼的程序員,現(xiàn)在群里沒人,就算加了我也只是偶爾回復(fù)一下,上班時間沒有過多時間啊。當(dāng)然有好的建議我們還是可以交流一下。非誠勿擾哈。
轉(zhuǎn)載于:https://my.oschina.net/u/1271235/blog/163932
總結(jié)
以上是生活随笔為你收集整理的bigapple之utils-update部分apk自动下载安装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自定义的命民空间在其他程序集里无法调用
- 下一篇: mysqldump 导出某几张表