关于Android软件更新

关于软件更新的问题,简单的说一下。

首先软件更新需要判断是否需要更新。如果需要更新,需要获取更新的链接。我们可以把这个看成一个简单的系统。需要客户端请求和服务端相应。     为了简单起见我们将服务端就只放一个简单的XML文件,XML文件包含了最新的客户端版本号(这里尽量采用版本号,因为版本号是Int型的便于比较)和最新版APK的下载地址。

1 <update>
2 <version>2</version>
3 <url>http://www.youdoman.com/apk.apk</url>
4 </update>

这样简单的服务器端就可以了。    

客户端只需要读取此xml,并通过sax解析。然后获取客户端的版本号跟从网络中读取的最新版本号做比较,如果客户端的版本号跟服务器端的版本号不同则需要更新,调用系统Intent下载更新APK即可。

 1 //获取软件系统版本号
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 }

有的时候,我们可能需要获取手机系统的一些数据,用来选择相应的更新数据或者统计一些数据。获取的数据越多,也就越利于我们给用户提供更准确的更新选择。

 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 //获得系统固件版本
12 protected String getTarget(Context ctx) {
13 return android.os.Build.VERSION.RELEASE;
14 }
15 //获得系统固件版本号
16 protected String getSDK(Context ctx) {
17 return android.os.Build.VERSION.SDK;
18 }
19 }

拿到了这些数据我们只要交给服务器,服务器可以通过详细信息判断来决定返回的数据信息。 拿到新版本apk的url后就可以通过系统Intent来下载安装APK。

你可能感兴趣的:(关于Android软件更新)