https://www.jianshu.com/p/ee1990270ee1

网上找了很多方法都不太靠谱,有问题,自己改了改,亲试可以

大家都知道,版本号一般由以下几部分组成:

1.  主版本号
2. 次版本号
3. 修正版本号
4. 编译版本号
例如:2.1.3 ,3.7.5,10.2.0

在比较版本号时,正确的做法应该是,主版本号和主版本号比较,次版本号和次版本号比较等等,也就是把版本号分割,对应的组成之间进行比较,如下:

/**
* 版本号比较
*
* @param version1
* @param version2
* @return
*/
public static int compareVersion(String version1, String version2) {
if (version1.equals(version2)) {
return 0;
}
String[] version1Array = version1.split("\\.");
String[] version2Array = version2.split("\\.");
Log.d("HomePageActivity", "version1Array=="+version1Array.length);
Log.d("HomePageActivity", "version2Array=="+version2Array.length);
int index = 0;
// 获取最小长度值
int minLen = Math.min(version1Array.length, version2Array.length);
int diff = 0;
// 循环判断每位的大小
Log.d("HomePageActivity", "verTag2=2222="+version1Array[index]);
while (index < minLen
&& (diff = Integer.parseInt(version1Array[index])
- Integer.parseInt(version2Array[index])) == 0) {
index++;
}
if (diff == 0) {
// 如果位数不一致,比较多余位数
for (int i = index; i < version1Array.length; i++) {
if (Integer.parseInt(version1Array[i]) > 0) {
return 1;
}
} for (int i = index; i < version2Array.length; i++) {
if (Integer.parseInt(version2Array[i]) > 0) {
return -1;
}
}
return 0;
} else {
return diff > 0 ? 1 : -1;
}
}

结果说明:0代表相等,1代表version1大于version2,-1代表version1小于version2

作者:runner123
链接:https://www.jianshu.com/p/ee1990270ee1
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

android 版本号大小比较的更多相关文章

  1. 怎样查看apk须要支持的Android版本号

    假设有一个apk,须要知道他最低安装支持的Android版本号是什么,应该怎样查看呢? 直接将apk后缀名改为rar或者zip,拉出AndroidManifest.xml?不行,AndroidMani ...

  2. iOS 比较版本号大小的方法

    比较iOS版本号大小 eg:3.2.0和3.1.0 或者 3.2.0和3.2比较 返回bool值变量YES or NO -(BOOL)compareVesionWithServerVersion:(N ...

  3. Android版本号列表

    Android版本号列表

  4. android 图片大小适配,如何在不同屏幕上适配图片,如何设置可以自适应不同分辨率?

    android 图片大小适配,如何在不同屏幕上适配图片,如何设置可以自适应不同分辨率? Android为了适应不同的分辨率,需要将不同的图片放到不同的drawable目录下,分辨率的匹配规则如下:dr ...

  5. JS实现两版本号大小比较

    JavaScript实现版本号比对(含字母) 昨天,有一道面试题,要求是这样的: 用你熟悉的编程语言,实现一个比较任意两个软件版本号大小的函数,如1.2.3a与1.2.4b进行比较,后者版本号更大,要 ...

  6. C# 如何比较版本号大小

    最近遇到了一个数据迁移的问题,因为配置文件的结构发生变化,所以要把低版本的用户数据保存下来,存到最新版本中去. 这里就有一个比较版本号大小的问题了,网上乱七八糟算法一堆,大致意思就是用分割字符串的方法 ...

  7. ANDROID版本号和版本名称的重要性介绍

    当我们在刚开始学习ANDROID的时候,可能不会过多的关注这个位于manifest.xml文件中的versionCode和versionName. 但是其实一个好的版本控制,对于我们有至关重要的作用. ...

  8. Android笔记: Android版本号

    由于有2套版本号 总是对应不准 记下来做过标记 Android 4.3 ----18 Android 4.2---17 Android 4.1---16 Android 4.0.3---15Andro ...

  9. TeleMCU视频会议之Android版本号WebRTC client支持

    本文原创自 http://blog.csdn.net/voipmaker  转载注明出处. 最新版本号TeleMCU 添加了Android手机端WebRTC视频会议能力,Android手机安装Chro ...

随机推荐

  1. nio、bio区别,应运场景

    bio阻塞i/o a.面向流的,InputStream(),OuputStream字节输入流,字节输出流,Reader,Writer字符输入流,字符输出流 b.阻塞的IO,比如Socket,它的底层用 ...

  2. tomcat启动时报:IOException while loading persisted sessions: java.io.EOFException的解决方案 ZT

    错误代码如下: 严重: IOException while loading persisted sessions: java.io.EOFException java.io.EOFException ...

  3. PTA L2-4 关于堆的判断

    先上题面 链接 https://pintia.cn/problem-sets/994805046380707840/problems/994805064676261888 首先,题目描述的很清楚,这是 ...

  4. 同时使用多个JDK版本的方法

    开发环境需要使用JDK1.8,但是有些系统仅支持JDK1.6,以下方法可满足此需求: 1.使用安装包安装JDK1.6,安装之后记得设置不自动更新,控制面板-JAVA:        2.使用免安装版J ...

  5. Spring.NET在MVC中实现业务层和UI层解耦

    最近在项目中用到了Spring.NET,使用它来实现业务层和UI层解耦.使用过程中难免遇到问题,现把遇到的一些问题整理出来,留作笔记. 使用的开发工具是vs2017,.netframework 4.6 ...

  6. JS之clientX,clientY,screenX,screenY,offsetX,offsetY区别

    首先需要知道clientX,clientY,screenX,screenY,offsetX,offsetY 是鼠标事件对象下的几个属性. 之前也一直对这些属性搞的稀里糊涂,看文档上说的也是不太理解,反 ...

  7. SDL中 so库的使用

    用到的项目:Tocy-Android-SDLv2 JAVA层:只有一个 SDLActivity.java 路径\Android-SDLv2\src\org\libsdl\app 项目简单分析: 默认在 ...

  8. c# 纯代码调用 webservice

    public static class RequestHelper { public class RequestResult { public RequestResult(bool requestRe ...

  9. C# 判断文件编码

    无耐网上各种方法都有缺陷,此方法为原创,暂问发现问题.如发现请指正 public static Encoding GetFileEncodingByContent(string path) { var ...

  10. PythonStudy——装饰器 Decorator

    def outer(func): def inner(): print("新增功能1") func() print("新增功能2") return inner ...