您的位置:首页 > 其它

手机安全卫士开发系列(4)——显示更新对话框

2013-08-14 22:41 423 查看
在上一篇文章中我们从服务器读取配置并解析成了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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: