Android 获取版本号

As described in the android documentation, the SDK level (integer) the phone is running is available in:

android.os.Build.VERSION.SDK_INT;

The enum corresponding to this int is in the android.os.Build.VERSION_CODES class.


Code example:

int   currentapiVersion=android.os.Build.VERSION.SDK_INT;
if(
currentapiVersion >= android.os.Build.VERSION_CODES.FROYO){
      
   // Do something 
}else{
         // do something 
}


Note: 

This SDK_INT is available since Donut (android 1.6 / API4) 

so make sure your application is not retro-compatible with Cupcake (android 1.5 / API3)when you use it or your application will crash(thanks to Programmer Bruce for the precision).

====================================================================================

Build.VERSION_CODES

1 (0x00000001)           Android 1.0             BASE

2 (0x00000002)           Android 1.1             BASE_1_1

3 (0x00000003)           Android 1.5             CUPCAKE

4 (0x00000004)           Android 1.6             DONUT

5 (0x00000005)           Android 2.0             ECLAIR

6 (0x00000006)           Android 2.0.1          ECLAIR_0_1

7 (0x00000007)           Android 2.1             ECLAIR_MR1

8 (0x00000008)           Android 2.2             FROYO

9 (0x00000009)           Android 2.3             GINGERBREAD

10 (0x0000000a)         Android 2.3.3          GINGERBREAD_MR1

11 (0x0000000b)         Android 3.0             HONEYCOMB

12 (0x0000000c)         Android 3.1             HONEYCOMB_MR1

13 (0x0000000d)         Android 3.2             HONEYCOMB_MR2




Build.VERSION_CODES



参考推荐:

Android 获取屏幕尺寸与密度



<think>我们参考了站内引用中的内容,特别是引用[1]、[2]、[3]提供了获取Android版本号(即系统版本)和应用版本号的方法。 根据引用[3],我们可以得到两种版本号: 1. 应用版本号(versionName):展示给消费者的版本号,如“1.0.0” 2. 应用版本代码(versionCode):对消费者不可见的版本号,通常是一个整数,用于内部管理。 同时,引用[1]提到了获取设备的Android系统版本号(即系统版本,如Android 10、Android 11等)。 因此,我们需要区分: - 获取设备的Android系统版本号(系统版本) - 获取当前应用的版本号(应用版本名versionName) - 获取当前应用的版本代码(versionCode) 下面分别介绍: 一、获取设备的Android系统版本号(系统版本) 我们可以通过`Build.VERSION`类来获取。具体如下: ```java String osVersion = Build.VERSION.RELEASE; // 例如:返回字符串"10"或"11" ``` 二、获取应用版本号(versionName)和版本代码(versionCode) 根据引用[3]中的代码示例,我们可以通过`PackageManager`获取应用的`PackageInfo`,然后从中提取。 1. 获取版本名称(versionName): ```java public String getAppVersionName() { try { PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0); return packageInfo.versionName; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return "未知"; } } ``` 2. 获取版本代码(versionCode): 注意:在API 28(Android 9)及以上,`versionCode`被废弃,推荐使用`long`类型的`getLongVersionCode()`,但为了兼容,我们可以: ```java public long getAppVersionCode() { try { PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { return packageInfo.getLongVersionCode(); // 返回long类型的版本代码 } else { return packageInfo.versionCode; // 返回int类型的版本代码(已废弃) } } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return 0; } } ``` 注意:上述方法需要在Activity或其他有Context的地方调用。如果在非Context环境中,需要传入Context。 另外,引用[4]似乎与版本号无关,可以忽略。 总结: 1. 设备系统版本:`Build.VERSION.RELEASE` 2. 应用版本名:通过`PackageInfo`的`versionName` 3. 应用版本代码:根据API级别选择使用`versionCode`(已废弃)或`getLongVersionCode()` 下面给出一个完整的示例代码,在Activity中获取这些信息: ```java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取设备系统版本 String osVersion = Build.VERSION.RELEASE; Log.d("VersionInfo", "系统版本: " + osVersion); // 获取应用版本名 String appVersionName = getAppVersionName(); Log.d("VersionInfo", "应用版本名: " + appVersionName); // 获取应用版本代码 long appVersionCode = getAppVersionCode(); Log.d("VersionInfo", "应用版本代码: " + appVersionCode); } private String getAppVersionName() { try { PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0); return packageInfo.versionName; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return "未知"; } } private long getAppVersionCode() { try { PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { return packageInfo.getLongVersionCode(); } else { return packageInfo.versionCode; } } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return 0; } } } ``` 这样,我们就可以在日志中看到输出的版本信息了。 §§相关问题§§ 1. 如何获取Android设备的型号信息? 2. 在Android中如何获取应用的安装时间? 3. 如何判断Android应用是debug版本还是release版本? </think> 在Android开发中,获取版本号主要分为两类:**设备系统版本号**和**应用版本号**。以下是具体方法和代码示例: --- ### 一、获取设备系统版本号Android OS版本) 通过`Build.VERSION`类获取: ```java // 获取系统版本号(如:13) int sdkVersion = Build.VERSION.SDK_INT; // 获取系统版本名称(如:"Android 13") String osVersion = Build.VERSION.RELEASE; ``` --- ### 二、获取应用版本号 通过`PackageManager`获取应用信息: #### 1. 获取应用版本名称(versionName) 用户可见的版本号(如:`"1.2.0"`): ```java public String getAppVersionName(Context context) { try { PackageInfo packageInfo = context.getPackageManager() .getPackageInfo(context.getPackageName(), 0); return packageInfo.versionName; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return "未知"; } } ``` #### 2. 获取应用版本代码(versionCode) 内部管理的整型版本号(如:`123`): ```java public long getAppVersionCode(Context context) { try { PackageInfo packageInfo = context.getPackageManager() .getPackageInfo(context.getPackageName(), 0); // 适配不同Android版本 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { return packageInfo.getLongVersionCode(); // API 28+ 推荐 } else { return packageInfo.versionCode; // 旧版本 } } catch (Exception e) { e.printStackTrace(); return 0; } } ``` --- ### 使用示例(在Activity中) ```java // 获取系统版本 String osVersion = Build.VERSION.RELEASE; // e.g., "13" int sdkInt = Build.VERSION.SDK_INT; // e.g., 33 (Android 13) // 获取应用版本 String appVersion = getAppVersionName(this); // e.g., "1.2.0" long versionCode = getAppVersionCode(this); // e.g., 123 ``` --- ### 关键说明 1. **权限**:获取版本号无需额外权限 2. **版本适配**: - `versionCode`在Android 9(API 28)后改用`long`类型,需调用`getLongVersionCode()` 3. **常见错误处理**: - 包名不存在时捕获`NameNotFoundException` - 旧设备兼容`versionCode`的int类型限制 > 通过`Build.VERSION`获取设备系统信息,通过`PackageManager`获取应用元数据,是Android开发中的标准做法[^1][^2][^3]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值