android 对比版本号


给定两个版本号,比较哪一个版本号更新。

通过版本号的长度,分两种情况: 1 服务器版本号 长度 大于 当前版本号 ;2  小于或等于 。

通过“.”拆分字符串,比较相同位的版本值,若长度不够就补0。






/**
     * 版本对比(是否需要更新版本)
     *
     * @param newVersion
     *            服务器上获取的版本
     * @param indexVersion
     *            当前使用的版本
     * @return true:服务器上是最新版本,需要更新; false:不需要更新
     */
    public static boolean isUpdateForVersion(String newVersion, String indexVersion) {
        // boolean resultFlag = false;

        if ("".equals(newVersion) || null == newVersion
                || "null".equals(newVersion)) {
            return false;
        } else {

            String[] newNums = newVersion.split("\\.");
            String[] indexNums = indexVersion.split("\\.");

            if (newNums.length > indexNums.length) {// 服务器版本长度 比当前版本要长
                for (int i = 0; i < newNums.length; i++) {
                    //位数不够,给当前版本补零
                    int currentValue = 0;
                    if(i < indexNums.length){
                        currentValue = Integer.parseInt(indexNums[i]);
                    }


                    // 服务器上同位版本数如果有一个数大于 当前的,就是最新版,要更新;否则不更新
                    if (Integer.parseInt(newNums[i]) > currentValue) {
                        return true;
                    } else if (Integer.parseInt(newNums[i]) <= currentValue) {
//                        return false;
                    }
                }
                return false;
            } else if (newNums.length <= indexNums.length) {
                for (int i = 0; i < indexNums.length; i++) {
                    //位数不够,给服务器版本补零
                    int newValue = 0;
                    if(i < newNums.length){
                        newValue = Integer.parseInt(newNums[i]);
                    }

                    // 服务器上同位版本数如果有一个数大于 当前的,就是最新版,要更新;否则不更新
                    if (newValue > Integer.parseInt(indexNums[i])) {
                        return true;
                    } else if (newValue <= Integer.parseInt(indexNums[i])) {
//                        return false;
                    }
                }
                return false;
            }

        }
        return false;

    }
    
    // 获取当前版本的版本号  
    public static String getCurrentVersion(Context context) {  
        try {  
            PackageManager packageManager = context.getPackageManager();  
            PackageInfo packageInfo = packageManager.getPackageInfo(context.  
                    getPackageName(), 0);
            Log.d("TAG", "getCurrentVersion: 版本值--》"+packageInfo.versionCode);
            Log.d("TAG", "getCurrentVersion: 版本号--》"+packageInfo.versionName);
            return packageInfo.versionName;
        } catch (NameNotFoundException e) {  
            e.printStackTrace();  
            return null;  
        }
        
    }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值