VersionManagementUtil.java

package com.zozoms.rooexpress.utils;import java.util.Arrays;import android.content.Context;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;public class VersionManagementUtil {private static final String TAG = "VersionManagementUtil";private static Context mContext;private static final VersionManagementUtil INSTANCE = new VersionManagementUtil();public static VersionManagementUtil getInstance(Context mContext) {VersionManagementUtil.mContext = mContext;return VersionManagementUtil.INSTANCE;}/** * 获取版本号 *  * @return 当前应用的版本号,默认是1.0.0 */public static String getVersion(Context mContext) {try {PackageManager manager = mContext.getPackageManager();PackageInfo info = manager.getPackageInfo(mContext.getPackageName(), 0);String version = info.versionName;return version;} catch (Exception e) {e.printStackTrace();return "1.0.0";}}/** *  * @param version1 * @param version2 * @return if version1 > version2, return 1, if equal, return 0, else return *         -1 */public static int VersionComparison(String versionServer, String versionLocal) {String version1 = versionServer;String version2 = versionLocal;if (version1 == null || version1.length() == 0 || version2 == null || version2.length() == 0)throw new IllegalArgumentException("Invalid parameter!");int index1 = 0;int index2 = 0;while (index1 < version1.length() && index2 < version2.length()) {int[] number1 = getValue(version1, index1);ZozoLog.i(TAG," ===== number1 ====" + Arrays.toString(number1));int[] number2 = getValue(version2, index2);ZozoLog.i(TAG," ===== number2 ====" + Arrays.toString(number2));if (number1[0] < number2[0]){ZozoLog.i(TAG," ===== number1[0] ====" + number1[0]);ZozoLog.i(TAG," ===== number2[0] ====" + number2[0]);return -1;}else if (number1[0] > number2[0]){ZozoLog.i(TAG," ===== number1[0] ====" + number1[0]);ZozoLog.i(TAG," ===== number2[0] ====" + number2[0]);return 1;}else {index1 = number1[1] + 1;index2 = number2[1] + 1;}}if (index1 == version1.length() && index2 == version2.length())return 0;if (index1 < version1.length())return 1;elsereturn -1;}/** *  * @param version * @param index *            the starting point * @return the number between two dots, and the index of the dot */public static int[] getValue(String version, int index) {int[] value_index = new int[2];StringBuilder sb = new StringBuilder();while (index < version.length() && version.charAt(index) != '.') {sb.append(version.charAt(index));index++;}value_index[0] = Integer.parseInt(sb.toString());value_index[1] = index;return value_index;}public void Update(String url) {ZozoLog.i(TAG, "Update:url = "+url);UpDataManager updateManager = new UpDataManager(mContext);updateManager.checkUpdateInfo(url);}}

调用

VersionResult versionResult = FastJsonTools.parseObject(new JSONObject(result).toString(),VersionResult.class);String currentVersion = VersionManagementUtil.getVersion(mContext);if(versionResult != null){ZozoLog.d(TAG, "onHttpReqConnSuccess"+versionResult);if(versionResult.getErrno() == 0){if(VersionManagementUtil.VersionComparison(versionResult.getData().getVersion(),currentVersion)){VersionManagementUtil.getInstance(mContext).Update(versionResult.getData().getDownload());}else{ToastUtils.showToast("当前已经是最新版本了");}}else{ToastUtils.showToast(versionResult.getErrmsg());}}else{ToastUtils.showToast("未能获取服务器版本号");}








更多相关文章

  1. Android拍照上传至PHP服务器并写入MySql数据库(下)
  2. Java和Android Http连接程序:使用java.net.URL 下载服务器图片到
  3. 【Android 电量优化】电量优化 ( 获取电量分析报告 | 阿里云服务
  4. Android解析服务器端发来的xml数据示例
  5. (Android)react-native获得手机的Android版本号
  6. android 向web服务器发送post请求并获取结果
  7. 推送功能,(服务器向android客户端推送信息,通知显示在应用栏)(2018-0
  8. 访问本地服务器
  9. 解决Android SDK Manager不能访问Google服务器

随机推荐

  1. Android(安卓)通过读取本地Arp表获取当前
  2. android 权限问题分析
  3. android Camera2 API使用详解
  4. android学习日记04-.9工具的使用
  5. Android(安卓)重要的组件
  6. Android保活
  7. android studio之build.gradle写法简介
  8. Android中获取手机屏幕各部分的尺寸
  9. Android(安卓)ActivityManagerService(AMS
  10. Android之父Andy Rubin