您的位置:首页 > 移动开发 > Android开发

FAQ_19 如何判断 android 版本

2012-03-16 21:02 197 查看
android 已经发布很多版本,记住每个版本及其对应的版本名称,实在是没那个必要。

先看一张来自 http://zh.wikipedia.org/wiki/Android 的图:


但是,有些时候需要知道这些信息。所以,你需要知道到那里去找。

有问题,找源码!

下面是 android4.0//frameworks/base/core/java/android/os/Build.java 部分源码:

/**
* Enumeration of the currently known SDK version codes.  These are the
* values that can be found in {@link VERSION#SDK}.  Version numbers
* increment monotonically with each official platform release.
*/
public static class VERSION_CODES {
/**
* Magic version number for a current development build, which has
* not yet turned into an official release.
*/
public static final int CUR_DEVELOPMENT = 10000;

/**
* October 2008: The original, first, version of Android.  Yay!
*/
public static final int BASE = 1;

/**
* February 2009: First Android update, officially called 1.1.
*/
public static final int BASE_1_1 = 2;

/**
* May 2009: Android 1.5.
*/
public static final int CUPCAKE = 3;

/**
* September 2009: Android 1.6.
*
* <p>Applications targeting this or a later release will get these
* new changes in behavior:</p>
* <ul>
* <li> They must explicitly request the
* {@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE} permission to be
* able to modify the contents of the SD card.  (Apps targeting
* earlier versions will always request the permission.)
* <li> They must explicitly request the
* {@link android.Manifest.permission#READ_PHONE_STATE} permission to be
* able to be able to retrieve phone state info.  (Apps targeting
* earlier versions will always request the permission.)
* <li> They are assumed to support different screen densities and
* sizes.  (Apps targeting earlier versions are assumed to only support
* medium density normal size screens unless otherwise indicated).
* They can still explicitly specify screen support either way with the
* supports-screens manifest tag.
* </ul>
*/
public static final int DONUT = 4;

/**
* November 2009: Android 2.0
*
* <p>Applications targeting this or a later release will get these
* new changes in behavior:</p>
* <ul>
* <li> The {@link android.app.Service#onStartCommand
* Service.onStartCommand} function will return the new
* {@link android.app.Service#START_STICKY} behavior instead of the
* old compatibility {@link android.app.Service#START_STICKY_COMPATIBILITY}.
* <li> The {@link android.app.Activity} class will now execute back
* key presses on the key up instead of key down, to be able to detect
* canceled presses from virtual keys.
* <li> The {@link android.widget.TabWidget} class will use a new color scheme
* for tabs. In the new scheme, the foreground tab has a medium gray background
* the background tabs have a dark gray background.
* </ul>
*/
public static final int ECLAIR = 5;

/**
* December 2009: Android 2.0.1
*/
public static final int ECLAIR_0_1 = 6;

/**
* January 2010: Android 2.1
*/
public static final int ECLAIR_MR1 = 7;

/**
* June 2010: Android 2.2
*/
public static final int FROYO = 8;

/**
* November 2010: Android 2.3
*/
public static final int GINGERBREAD = 9;

/**
* February 2011: Android 2.3.3.
*/
public static final int GINGERBREAD_MR1 = 10;

/**
* February 2011: Android 3.0.
*
* <p>Applications targeting this or a later release will get these
* new changes in behavior:</p>
* <ul>
* <li> The default theme for applications is now dark holographic:
*      {@link android.R.style#Theme_Holo}.
* <li> The activity lifecycle has changed slightly as per
* {@link android.app.Activity}.
* <li> When an application requires a permission to access one of
* its components (activity, receiver, service, provider), this
* permission is no longer enforced when the application wants to
* access its own component.  This means it can require a permission
* on a component that it does not itself hold and still access that
* component.
* </ul>
*/
public static final int HONEYCOMB = 11;

/**
* May 2011: Android 3.1.
*/
public static final int HONEYCOMB_MR1 = 12;

/**
* June 2011: Android 3.2.
*
* <p>Update to Honeycomb MR1 to support 7 inch tablets, improve
* screen compatibility mode, etc.</p>
*
* <p>As of this version, applications that don't say whether they
* support XLARGE screens will be assumed to do so only if they target
* {@link #HONEYCOMB} or later; it had been {@link #GINGERBREAD} or
* later.  Applications that don't support a screen size at least as
* large as the current screen will provide the user with a UI to
* switch them in to screen size compatibility mode.</p>
*
* <p>This version introduces new screen size resource qualifiers
* based on the screen size in dp: see
* {@link android.content.res.Configuration#screenWidthDp},
* {@link android.content.res.Configuration#screenHeightDp}, and
* {@link android.content.res.Configuration#smallestScreenWidthDp}.
* Supplying these in <supports-screens> as per
* {@link android.content.pm.ApplicationInfo#requiresSmallestWidthDp},
* {@link android.content.pm.ApplicationInfo#compatibleWidthLimitDp}, and
* {@link android.content.pm.ApplicationInfo#largestWidthLimitDp} is
* preferred over the older screen size buckets and for older devices
* the appropriate buckets will be inferred from them.</p>
*
* <p>New {@link android.content.pm.PackageManager#FEATURE_SCREEN_PORTRAIT}
* and {@link android.content.pm.PackageManager#FEATURE_SCREEN_LANDSCAPE}
* features are introduced in this release.  Applications that target
* previous platform versions are assumed to require both portrait and
* landscape support in the device; when targeting Honeycomb MR1 or
* greater the application is responsible for specifying any specific
* orientation it requires.</p>
*/
public static final int HONEYCOMB_MR2 = 13;

/**
* Android 4.0.
*
* <p>Applications targeting this or a later release will get these
* new changes in behavior:</p>
* <ul>
* <li> For devices without a dedicated menu key, the software compatibility
* menu key will not be shown even on phones.  By targeting Ice Cream Sandwich
* or later, your UI must always have its own menu UI affordance if needed,
* on both tablets and phones.  The ActionBar will take care of this for you.
* <li> 2d drawing hardware acceleration is now turned on by default.
* You can use
* {@link android.R.attr#hardwareAccelerated android:hardwareAccelerated}
* to turn it off if needed, although this is strongly discouraged since
* it will result in poor performance on larger screen devices.
* <li> The default theme for applications is now the "device default" theme:
*      {@link android.R.style#Theme_DeviceDefault}. This may be the
*      holo dark theme or a different dark theme defined by the specific device.
*      The {@link android.R.style#Theme_Holo} family must not be modified
*      for a device to be considered compatible. Applications that explicitly
*      request a theme from the Holo family will be guaranteed that these themes
*      will not change character within the same platform version. Applications
*      that wish to blend in with the device should use a theme from the
*      {@link android.R.style#Theme_DeviceDefault} family.
* <li> Managed cursors can now throw an exception if you directly close
* the cursor yourself without stopping the management of it; previously failures
* would be silently ignored.
* <li> The fadingEdge attribute on views will be ignored (fading edges is no
* longer a standard part of the UI).  A new requiresFadingEdge attribute allows
* applications to still force fading edges on for special cases.
* </ul>
*/
public static final int ICE_CREAM_SANDWICH = 14;
}


ok,里面详细说明了版本号以及版本名称!

但是如何判断当前设备的 android 版本?

if (Build.VERSION.SDK_INT > 13) {// 4.0version
//
}

这样可以在代码里面根据 android 设备的不同版本,做相应的处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: