Android不同版本间兼容性处理

泡在网上的日子 / 文 发表于2014-05-23 00:40 次阅读 android,兼容

   在Android系统中向下兼容性比较差,但是一个应用APP经过处理还是可以在各个版本间运行的。向下兼容性不好,不同版本的系统其API版本也不同,自然有些接口也不同,主要是旧的平台使用不了新的API。

   但这并不代表每个平台都需要一个单独的apk,也不代表使用了新sdk的apk在低版本系统手机上不能运行。可以在高SDK上开发,并在程序中作版本判断,低版本运行环境使用旧的API


   那么,如何在软件运行时做出这样的判断呢?

  在Android SDK开发文档中有段话这样的话:

  在运行时检查系统版本

   Android provides a unique code for each platform version in theBuild constants class. Use these codes within your app to build conditions that ensure the code that  depends on higher API levels is executed only when those APIs are available on the system.

privatevoid setUpActionBar(){// Make sure we're running on Honeycomb or higher to use ActionBar APIsif(Build.VERSION.SDK_INT >=Build.VERSION_CODES.HONEYCOMB){        ActionBar actionBar = getActionBar();         actionBar.setDisplayHomeAsUpEnabled(true);}}

Note: When parsing XML resources, Android ignores XML attributes that aren’t supported by the current device. So you can safely use XML attributes thatare only supported by newer versions without worrying about older versions breaking when theyencounter that code. For example, if you set thetargetSdkVersion="11", your app includes the ActionBar by defaulton Android 3.0 and higher. To then add menu items to the action bar, you need to setandroid:showAsAction="ifRoom" in your menu resource XML. It's safe to do this in a cross-version XML file, because the older versions of Android simply ignore theshowAsAction attribute (that is, you do not need a separate version inres/menu-v11/).


   从上面可以知道Android为我们提供了一个常量类Build,其中最主要是Build中的两个内部类VERSION和VERSION_CODES,

VERSION表示当前系统版本的信息,其中就包括SDK的版本信息,用于成员SDK_INT表示;

对于VERSION_CODES在SDK开发文档中时这样描述的,Enumeration of the currently known SDK version codes. These are the values that can be found inSDK. Version numbers increment monotonically with each official platform release.

其成员就是一些从最早版本开始到当前运行的系统的一些版本号常量。

   在我们自己开发应用过程中,常常使用如下的代码形式判断运行新API还是旧的API:

if(Build.VERSION.SDK_INT >=Build.VERSION_CODES.HONEYCOMB){           
     // 包含新API的代码块  
}else{
     // 包含旧的API的代码块 
}



收藏 赞 (3) 踩 (6)
上一篇:改变listview中item选中时文字的颜色
当listview的某个item选中时,默认有个选中的高亮显示,如果你要自定义选中时的高亮显示效果,可以在listview中设置属性 android:listSelector="@drawable/item_selector" 其中 item_selector 是在drawable目录下定义的一个xml文件,这种用于突出不同状态下
下一篇:ListView知识点总结
应该说没有几个从事android开发的人员能敢说自己完全掌握了ListView。本篇文章比较全面的总结了lisiview中容易被忽略但有用的基础知识点(不包括如何在异步加载数据的情况下做到流畅等高级用法)。文章写于2012年,但是仍然不过时,网上很多转载,但真正出处