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


  • 相关阅读:
    LeetCode 654. 最大二叉树
    LeetCode 617. 合并二叉树
    LeetCode 234. 回文链表
    LeetCode 328. 奇偶链表
    LeetCode 24. 两两交换链表中的节点
    LeetCode 21. 合并两个有序链表
    LeetCode 876. 链表的中间结点
    顺序表的定义及其相关基本操作
    LeetCode 206. 反转链表
    LeetCode 111. 二叉树的最小深度
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6469776.html
Copyright © 2011-2022 走看看