安卓應用檢查更新並下載安裝
在這篇文章中(參見 android中如何下載檔案並顯示下載進度 )我們講到了如何下載檔案的問題,今天我介紹如何實現應用的自動更新,其中下載apk模組用到了前一篇文章中的知識。當然這只是一個實現的框架,你需要根據自己的需求是改變一些細節。
自動更新的原理
其實就是客戶端將自己的版本號與服務端的版本號進行比對,版本號小於服務端則意味著有新版本,當然服務端的版本號是需要人工放上去的。
先看看效果:
為了程式碼的簡潔,我這裡用原生的alert對話方塊。
點選下載之後:
下載完成安裝的介面我就不張貼了。
使用方法:
很簡單,在需要檢查更新的地方加入如下程式碼:
1 2 |
updateChecker.checkForUpdates();
|
其中http://jcodecraeer.com/update.php返回的是伺服器段存放的版本資訊。服務端的版本資訊分為三部分:
1.版本號;
2.版本描述;
3.存放apk的url(告訴客戶端,在哪裡下載新版本的apk);
以http://jcodecraeer.com/update.php返回的結果為例,返回的字串具體是這樣的:
1 |
{ "url" : , "versionCode" : "2" , "updateMessage" : "1.修改了app圖示
2.裝置詳情的顯示方式" }
|
這是一個json格式的字串。
實現
有三個類:
其中
AppVersion是版本資訊的模型類,基本上和服務端返回的東西是相對應的。
DownloadService是下載模組。
UpdateChecker是檢查更新,呼叫下載模組,下載完安裝的工具類。
AppVersion
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
package
com.jcodecraeer.jcode.update;
public
class AppVersion {
private
String updateMessage;
private
String apkUrl;
private
int apkCode;
public
static final String APK_DOWNLOAD_URL = "url" ;
public
static final String APK_UPDATE_CONTENT = "updateMessage" ;
public
static final String APK_VERSION_CODE = "versionCode" ;
public
void setUpdateMessage(String updateMessage) {
this .updateMessage
= updateMessage;
}
|