`
dawuafang
  • 浏览: 1104725 次
文章分类
社区版块
存档分类
最新评论

Android应用在不同版本间兼容性处理 .

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

为了应用APP有更好的兼容性,咱们可以利用高版本的SDK开发应用,并在程序运行时(Runtime)对应用所运行的平台判断,旧平台使用旧的API,而新平台可使用新的API,这样可以较好的提高软件兼容性。


那么,如何在软件运行时做出这样的判断呢?答案下边揭晓:


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

Check System Version at Runtime(在软件运行时检查判断系统版本)


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

private void setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (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 the targetSdkVersion="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 set android: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 the showAsAction attribute (that is, you do not need a separate version in res/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 in SDK. Version numbers increment monotonically with each official platform release.

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

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


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


OK,大家都知道原理了吧! 需要实例的百度蛮多的,这里就不提供了。
分享到:
评论

相关推荐

    Android 高版本API方法在低版本系统上的兼容性处理

    新的方法带来许多便利,但无法在低版本系统上运行,如果兼容性处理不恰当,APP在低版本系统上,运行时将会crash。 本文以一个具体的例子说明如何在使用高API level的方法时处理好兼容性问题。 例子:根据给出路径,...

    新版Android开发教程.rar

    的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...

    Android项目PopupWindow下拉列表.rar

    1. 良好的兼容性:支持Android各个版本,兼容各种屏幕尺寸和设备类型。 2. 灵活的下拉列表项布局:可根据需要自定义下拉列表项的布局和样式。 3. 强大的数据处理能力:支持从本地数据库或网络获取数据,并进行分类、...

    基于Android平台的应用开发经典案例

    随着Android技术的迅猛发展和日趋成熟,Android操作系统在手持终端中所占比例正逐步上升,其开放性、便携性、良好的兼容性、无缝结合网络通信等特点将使Android操作系统在未来工业领域中也有着广泛的应用。...

    基于ReactNative的Android聚合应用RNPolymerPo.zip

    RNPolymerPo 是一个基于 React Native 的 Android 企业级生活类聚合实战项目...运行效果下一个版本准备做的事情:兼容性处理;夜间模式;热修复及 PHP 服务端编写;多语言切换等问题评估; 标签:RNPolymerPo

    Android项目项目_Gallery从SD卡中获取图片,并显示.rar

    5. **跨平台兼容性**:项目代码遵循Android开发规范,确保在不同设备和系统版本上的稳定运行。 **技术栈:** * 开发语言:Kotlin * 开发工具:Android Studio * 图片处理:Glide/Picasso * RAR解析:第三方RAR解析...

    Android项目的多媒体框架OpenCore介绍.rar

    2. **广泛的兼容性**:支持多种流行的音视频编码标准,如H.264、AAC等,确保在不同设备和平台上的兼容性。 3. **高效的性能**:利用硬件加速和优化的软件算法,提供流畅的高清视频播放体验。 4. **易用的API**:提供...

    Android项目瀑布流实现,类似于蘑菇街和迷尚 应用里的排列.rar

    本项目基于Android Studio开发,采用Java或Kotlin语言编写,兼容性好,易于扩展。核心功能包括: 1. 自定义布局:可根据需求调整列数、间距等参数,实现个性化瀑布流布局。 2. 图片异步加载:采用Glide或Picasso等...

    Android项目下拉刷新控件(ListView好ScrollView版).rar

    同时,该控件具有良好的兼容性,可在不同版本的Android设备上正常运行。 总之,这个Android项目中的下拉刷新控件是一个强大且易于使用的工具,可让您的应用更加生动和高效。我们鼓励您在此基础上进行二次开发,以...

    Android项目_Porting台湾 移植与研究实行.rar

    通过我们的研究和实践,我们整理出了一套系统的移植方法,包括代码分析、模块划分、兼容性处理等多个关键环节。 项目包含以下几个核心部分: 1. **代码库**:提供了台湾各类常用应用和功能的源代码,经过优化和...

    Android 4游戏编程入门经典

     1.8 所有设备之间的兼容性  1.9 不同的手机游戏  1.9.1 人手一台游戏机  1.9.2 随时上网  1.9.3 普通用户与游戏迷  1.9.4 市场很大,开发人员很少  1.10 小结 第2章 从android sdk开始  2.1 搭建开发环境 ...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    媒体查询 CSS媒体查询允许开发者基于浏览网站的设备的特性来应用不同的样式申明,最常用的特性是视口宽度。 GCF 谷歌内嵌浏览器框架, 使用此插件,用户可以通过Internet Explorer的用户界面,以Chrome内核的渲染方式...

    Android6.0权限问题解决

    机制上使用,因为高版本兼容低版本。 解决办法:(简单到没朋友) AndroidAcp ● Acp 为 Android check permission 缩写,此库简化Android 6.0 系统复杂的权限操作而编写。 特点 ● 支持批量权限申请,不需要重写 ...

    一个基于 React Native 的 Android 企业级应用项目源码

    RNPolymerPo 是一个基于 React Native 的生活类聚合实战项目,目前由于没有 MAC 设备,所以没有适配 iOS,感兴趣的可以自行适配 app 目录...兼容性处理; 夜间模式; 热修复及 PHP 服务端编写; 多语言切换等问题评估;

    基于ALSA的Android音频系统设计与实现

    完全模块化的设计,支持对称多处理和线程安全,对OSS(Open Sound System,开放声音系统)的向后兼容,以及提供了用户空间的alsa-lib库来简化应用程序的开发[1]。基于ALSA的音频系统能够很好的适应硬件的多样性,...

    android开发秘籍

    1.2 android 的两面性 2 1.3 运行android 的设备 2 1.3.1 htc 系列机型 4 1.3.2 摩托罗拉系列机型 4 1.3.3 三星系列机型 4 1.3.4 平板电脑 5 1.3.5 其他设备 5 1.4 android 设备的硬件差异 5 1.4.1 屏幕 5 ...

    Android基础教程

    以及本地数据存储等基础知识,而且通过“Hello, Android”项目深入探讨了外部通信、基于位置的服务、内置SQLite数据库、3D图形、多点触控、小部件、兼容性测试,以及如何向AndroidMarket发布应用程序等内容。...

    Android Office 文档处理软件 Smart Office 3.4.8 中文多语免费版.zip

    ★Android 1.5及以后的兼容性。 ★中搜索文本,并按照超文本链接。 ★轻松浏览任何页面,方便的手势。 ★云存储Dropbox的文件共享。 ★谷歌文档文件共享一些文件,β ★电子邮件,SD卡文件访问。 ★从可选的模板创建...

    YYjia安卓应用市场网站系统(YYjiaCMS) v3.2.zip

    基于PHP MYSQL开发的新型手机应用商店系统,支持Android、iPhone、iPad、Windows Phone、W8平板多平台应用,兼容性好,简单易用,适于SEO。程序与模板文件分开,大家可以很方便地建立自己的模板。 三位一体,多渠道展示...

Global site tag (gtag.js) - Google Analytics