关于Android软件更新
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
關(guān)于軟件更新的問題,簡單的說一下。
首先軟件更新需要判斷是否需要更新。如果需要更新,需要獲取更新的鏈接。我們可以把這個看成一個簡單的系統(tǒng)。需要客戶端請求和服務(wù)端相應(yīng)。 ??? 為了簡單起見我們將服務(wù)端就只放一個簡單的XML文件,XML文件包含了最新的客戶端版本號(這里盡量采用版本號,因為版本號是Int型的便于比較)和最新版APK的下載地址。
1 <update>2 <version>2</version>
3 <url>http://www.youdoman.com/apk.apk</url>
4 </update>
這樣簡單的服務(wù)器端就可以了。 ???
客戶端只需要讀取此xml,并通過sax解析。然后獲取客戶端的版本號跟從網(wǎng)絡(luò)中讀取的最新版本號做比較,如果客戶端的版本號跟服務(wù)器端的版本號不同則需要更新,調(diào)用系統(tǒng)Intent下載更新APK即可。
1 //獲取軟件系統(tǒng)版本號2 public class AppStatus {
3 protected static int getAppVersionId(Context ctx) {
4 try {
5 return ctx.getPackageManager().getPackageInfo(ctx.getPackageName(),0).versionCode;
6 } catch (NameNotFoundException e) {
7 // TODO Auto-generated catch block
8 return -1;
9 }
10 }
11 }
有的時候,我們可能需要獲取手機系統(tǒng)的一些數(shù)據(jù),用來選擇相應(yīng)的更新數(shù)據(jù)或者統(tǒng)計一些數(shù)據(jù)。獲取的數(shù)據(jù)越多,也就越利于我們給用戶提供更準確的更新選擇。
1 public class PhoneStatus {2 //獲取手機的IMEI號
3 protected String getImei(Context ctx){
4 TelephonyManager telephonyManager=(TelephonyManager) ctx.getSystemService(Context.TELEPHONY_SERVICE);
5 return telephonyManager.getDeviceId();
6 }
7 //獲得手機型號
8 protected String getModel(Context ctx) {
9 return android.os.Build.MODEL;
10 }
11 //獲得系統(tǒng)固件版本
12 protected String getTarget(Context ctx) {
13 return android.os.Build.VERSION.RELEASE;
14 }
15 //獲得系統(tǒng)固件版本號
16 protected String getSDK(Context ctx) {
17 return android.os.Build.VERSION.SDK;
18 }
19 }
拿到了這些數(shù)據(jù)我們只要交給服務(wù)器,服務(wù)器可以通過詳細信息判斷來決定返回的數(shù)據(jù)信息。 拿到新版本apk的url后就可以通過系統(tǒng)Intent來下載安裝APK。
轉(zhuǎn)載于:https://my.oschina.net/weisenz/blog/200616
總結(jié)
以上是生活随笔為你收集整理的关于Android软件更新的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无法连接打印机0X0000011B错误怎
- 下一篇: android sina oauth2.