在上一篇文章中我们从服务器读取配置并解析成了UpdateInfo对象。这一篇文章将介绍如何将信息比对,并显示更新对话框,具体流程如下:
//判读服务器的版本号和客户端的版本号是否相同 if(isNeedUpdate(versiontext)){ Log.i(TAG, "弹出升级对话框"); showUpdateDialog(); }
在SplashActivity的onCreate方法中判读服务器版本号和客户端版本号是否相同
获取客户端当前版本号的方法
/** * 获取当前应用程序的版本号 * * @return */ private String getVersion() { try { //包管理服务 PackageManager manager = getPackageManager(); //第一个参数为包名 PackageInfo info = manager.getPackageInfo(getPackageName(), 0); return info.versionName; } catch (Exception e) { e.printStackTrace(); return "版本号未知"; } }
获取服务器版本号并判断是否需要升级
/** * * @param version 当前客户端的版本信息 * @return 是否需要更新 */ public boolean isNeedUpdate(String versiontext){ Log.i(TAG, "进来判断是否需要更新"); try { UpdateInfoService service = new UpdateInfoService(this); System.out.println(service); info = service.getUpdateInfo(R.string.updateurl); System.out.println(info.getVersion()); String version = info.getVersion(); Log.i(TAG, "服务器版本是"+version); if(versiontext.equals(version)){ Log.i(TAG, "版本号相同无需升级,进入主界面"); return false; }else{ Log.i(TAG, "版本号不同,需要升级"); return true; } } catch (Exception e) { e.printStackTrace(); Toast.makeText(this , "获取更新信息异常,进入主界面", Toast.LENGTH_SHORT); return false; } }
如果版本号不同则显示升级对话框
/** * 升级对话框 */ public void showUpdateDialog(){ AlertDialog.Builder builder = new Builder(this); builder.setIcon(R.drawable.icon5); builder.setTitle("升级提醒"); builder.setMessage(info.getDescription()); //让用户不能取消对话框 builder.setCancelable(false); builder.setPositiveButton("确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Log.i(TAG, "下载Apk文件" + info.getApkurl()); } }); builder.setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Log.i(TAG, "用户取消,进入程序主界面"); } }); builder.create().show(); }
源代码下载:http://download.csdn.net/detail/lxq_xsyu/5947441