`

@TargetAPI + 版本判断实现高低API版本兼容

 
阅读更多

安卓开发中,在低版本SDK使用高版本的API会报错。一般处理方法是换一种实现方法,或者在高版本SDK中使用高版本API,低版本SDK中使用效果可能会差点的折衷方案;后者可以用如下技巧来实现。

步骤

Step 1

在使用了高版本API的方法前面加一个 @TargetApi(API号)

Step 2

在代码上用版本判断来控制不同版本使用不同的代码

eg.

    @TargetApi(11)
    
    public void text(){
    
    if(Build.VERSION.SDK_INT >= 11){
    
                 // 使用api11 新加 api的方法
    
            }
    else {
    // 低版本的折衷处理方法
    }
    
    }

知识点

1.Annotation

Annotation继承自java.lang.annotation.Annotation的类,用于向程序分析工具或虚拟机提供package class field methed 等方面的信息。Annotation 提供了一条与程序元素关联任何信息或者任何元数据(metadata)的途径。从某些方面看, annotation 就像修饰符一样被使用,并应用于包、类 型、构造方法、方法、成员变量、参数、本地变量的声明中。这些信息被存储在annotation的“name=value”结构对中。 annotation 类型是一种接口,能够通过java反射API的方式提供对其信息的访问。
annotaion 不影响程序代码的执行,无论增加、删除 annotation ,代码都始终如一的执行。
annotaion 与其他类的主要不同之处在于其使用方式;只要按照“@+annotation类型名称+(..逗号分割的name-value对...)”的组成语法,写在需要的地方。其中成员可以按照任何的顺序。如果 annotation 类型定义了某个成员的默认值,则这个成员可以被省略,eg.@Override。
annotation 方式写程序简短实用易维护,所以越来越成为主流。

2.Android lint

Android lint是一个代码扫描工具,能够帮助我们识别代码结构存在的问题,比如使用了高于minSdk的api。

3.@TargetAPI Annotation

@TargetAPI 对应android.annotation.TargetApi,与它相似的注解还有@SuppressLint,作用都是告诉编译器:你可以忽略掉lint错误了,我用高于minSdk的api又咋滴?要你管啊~我不怕啊^_^
为什么这里我们用 @TargetAPI 而不用@SuppressLint,因为@TargetAPI还能指明应用的API版本,在代码中获得平台的SDK版本与这个版本对比后提示应用与平台的兼容性,比如现在的TargetAPI指定为11,以后我用了13的,仍然会得到版本不兼容的提示;而@SuppressLint做不到这一点,所以@TargetAPI更优。

 

分享到:
评论

相关推荐

    linux sqlapi++ gcc-4.4 crack

    is a C++ library for accessing multiple SQL databases Oracle SQL Server DB2 Sybase Informix InterBase SQLBase MySQL PostgreSQL SQLite SQL Anywhere and ODBC It uses native APIs of target DBMS so ...

    IntelliJ IDEA语法报错"Usage of API documented as @since 1.6+"的解决办法

    这个错误提示表明,你在代码中使用了一些自Java 1.6版本开始引入的方法或API,但你的项目配置的目标平台版本低于1.6。以下是对这个问题的详细解析和解决办法。 首先,当IDE显示“Usage of API documented as @since...

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

    总的来说,处理Android高版本API的兼容性问题,关键在于:一是编译时通过注解消除警告,二是运行时进行版本检测并提供相应版本的实现。这种做法不仅解决了编译错误,也确保了应用在各种Android版本上的稳定运行。...

    Android高版本API方法如何在低版本系统上做兼容性处理浅析

    Android 高版本 API 方法如何在低版本系统上做兼容性处理浅析 Android 作为一款开源的移动操作系统,在不断更新和发展中,不断增加新的特性和方法。新的方法带来许多便利,但无法在低版本系统上运行,如果兼容性...

    eclipse兼容高低版本所需的jar包

    6. **下载缺失的jar包**:针对本主题提供的压缩包文件,"eclipse兼容高低版本所需的jar包",这可能包含了一些常用的、跨版本兼容的jar包。下载并添加到你的项目中,可以帮助解决启动报错的问题。 总的来说,解决...

    log4j 学习资料 API+ 源文件+例子

    2. **源代码**:通过阅读 Log4j 的源代码,开发者可以深入了解其实现原理,如何处理日志事件,以及如何实现自定义的日志行为。例如,`Priority` 类表示日志优先级,`Category` 类(在 Log4j 1.x 中,相当于 Log4j 2....

    jQuery1.7 API + JQuery UI API

    **jQuery 1.7 API 和 jQuery UI API 深度解析** jQuery,作为一个轻量级、功能丰富的JavaScript库,极大地简化了网页的DOM操作、事件处理、动画设计以及Ajax交互。jQuery 1.7是其一个重要的版本,带来了许多增强和...

    dotnet 根据基线包版本实现库版本兼容.rar

    标题中的"dotnet 根据基线包版本实现库版本兼容"直指一个关键的技术实践,即如何确保不同版本的.NET库在同一个项目或多个项目之间能够顺利协作。这个问题通常出现在升级库版本、维护旧项目或者在多个依赖项之间寻找...

    surfaceView +camera2 实现拍照功能

    在实际开发中,还需要处理一些额外的细节,例如权限管理(需要请求`CAMERA`和`WRITE_EXTERNAL_STORAGE`权限)、相机错误处理、以及在不同设备和Android版本上的兼容性问题。此外,为了提供更好的用户体验,可以添加...

    jtopo官网源码(API+demo)

    3. **扩展功能**:利用API尝试实现更复杂的功能,如添加自定义节点类型、动画效果等。 4. **数据驱动**:将后台数据与拓扑图绑定,实现动态更新。 通过以上方式,你将能够深入理解Jtopo的特性和用法,为你的项目...

    IOS版本兼容与屏幕适配

    因此,我们需要对 SDK 的了解,不了解直接查看使用的 API 所允许的版本,当遇到不直接就进行判断,选择执行的方法,不做任何动作响应,或者一定执行实现,就重写方法,完成高版本的任务。 在屏幕适配中,我们需要...

    Android利用productFlavors 打包不同版本API的调用

    这样,我们就可以为每个API级别创建单独的APK,确保它们只包含对应版本的代码和资源,从而提高应用的性能和兼容性。 通过productFlavors,Android开发者可以轻松管理多个版本的API调用,使得应用能够适应广泛的设备...

    此版本还可以使用Vuforia的ObjectTarget功能,unity版本建议使用2019

    使用较新的Unity版本可以确保你得到最新的优化和错误修复,同时也要注意Vuforia的版本应该与Unity版本匹配,避免可能出现的兼容性问题。 在实际开发中,使用Vuforia的ObjectTarget功能时,你可能需要编写C#脚本来...

    keil5安装版本不兼容问题

    然而,有时用户可能会遇到“keil5安装版本不兼容问题”,这通常是由于软件版本、目标设备库或者驱动程序不匹配导致的。以下是一些详细步骤和策略来解决这个问题: 首先,我们需要理解Keil μVision的工作原理。它...

    Firefox ESR版本不兼容旧插件解决办法

    ### Firefox ESR版本不兼容旧插件解决办法 在日常使用Firefox浏览器的过程中,用户可能会遇到扩展插件不兼容的问题,尤其是在使用ESR(Extended Support Release)版本时更为常见。ESR版本是为了提供长期支持而设计...

    (API 19) SDK Platform 下载

    通过使用`<uses-sdk>`标签在AndroidManifest.xml中指定最低和目标API级别,并利用`@TargetApi`和`@SuppressLint`注解来处理不兼容的API调用。 总的来说,下载并设置好API 19的SDK平台后,开发者将能够为Android 4.4...

    Android中转场动画的实现与兼容性处理

    本文将详细介绍如何在Android 5.0+版本中实现转场动画以及如何在Android 4.X上模拟这些效果。 首先,让我们来看看Android 5.0+中实现转场动画的三个步骤: 1. **创建动画资源**:在`res/`目录下创建一个名为`...

    测试Java版本不兼容.zip

    4. **使用兼容模式**:某些Java版本提供了向后兼容的选项,例如Java 8的`--source`和`--target`参数可以指定源代码和目标字节码的版本。 5. **迁移策略**:对于无法兼容的部分,制定详细的迁移计划,逐步将旧代码...

    Android Studio运行真机调试出现min Sdk(API 26)device Sdk(API 23)解决方法

    - **targetSdkVersion**: 表示应用开发时所针对的目标Android版本,它会影响应用的行为方式和兼容性处理。 - **deviceSdk**: 设备实际运行的SDK版本,即设备上安装的Android系统的API Level。 #### 1.2 错误提示...

    Android 版本检测与管理.rar

    为了实现这一点,开发者通常需要利用`@TargetApi`和`@SuppressLint`注解,以及条件编译语句(如`if (Build.VERSION.SDK_INT >= ...)`)来针对不同API级别编写不同的代码分支。 更新策略是另一个重要方面。为了确保...

Global site tag (gtag.js) - Google Analytics