zoukankan      html  css  js  c++  java
  • 手机安全卫士开发系列(4)——显示更新对话框

    在上一篇文章中我们从服务器读取配置并解析成了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


  • 相关阅读:
    Azure终于支持大容量虚拟机了-最高32核,448G内存
    Windows Azure 不能ping通的解决方案
    一个使用微软Azure blob实现文件下载功能的实例-附带源文件
    从技术角度看云计算的特点
    DNS记录
    转载:Vue相关开源项目库汇总(史上最全)
    SSL CA
    MVC 5 中启用Session
    2015年的JavaScript:Angular之类的框架将被库取代
    sql server 2014 express
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6469776.html
Copyright © 2011-2022 走看看