android 兼容API的检查

2024-09-06 08:08
文章标签 android api 检查 兼容

本文主要是介绍android 兼容API的检查,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

读之前可以了解一下api levels的知识:
Android中文翻译组的:Android开发者指南(10) —— Android API Levels



一,使用高版本API要注意的问题


在项目开发中:由于经验和其他条件的制约,如没有查看API出现的版本,对过时API没有作兼容等等。

可能出现下面的问题:


当你的代码使用一个高版本的API

应用运行于  低于API能够使用的版本手机 时,应用会闪退。


下面是一个例子:


如:

View的

public void setBackground (Drawable background)
Added in  API level 16

Set the background to a given Drawable, or remove the background. If the background has padding, this View's padding is set to the background's padding. However, when a background is removed, this View's padding isn't touched. If setting the padding is desired, please use setPadding(int, int, int, int).

Parameters
background The Drawable to use as the background, or null to remove the background
出现在API16

对应的过时方法是:

public void setBackgroundDrawable (Drawable background)
Added in  API level 1

This method was deprecated in API level 16.
use setBackground(Drawable) instead

安装在低于API16的手机上时,在应用调用这个API相关的功能时,会闪退。

下面是出现的条件,要同时满足:


1.仅仅使用setBackground (Drawable background),没有对API版本的兼容处理

2.项目配置的最低版本小于16(如果>=16,应用不能安装在低于API16的手机上)


二,发现使用高版本API的简单方法


1.修改AndroidManifest.xml中:
 
<use-sdk android:minSdkVersion="10" />
 
不要设置android:targetSdkVersion

 android:minSdkVersion="10":其中10是API兼容的最低版本

 
2.修改项目的SDK版本为低版本(android.jar的版本) 


就可以看到错误的地方(使用了高于SDK版本的API的位置)


注意:一般,只要使用第2点的方法,就可以发现是否用了高版本的API。

如果第2点,不能发现,请同时使用上面的2个方法

如果你使用上面的方法,项目中并没有报错,说明你的项目没有使用高版本API(反射除外)。


3.兼容API方法

1.使用API时,要看一下,API要求的sdk版本

(如果,觉得麻烦,就在写完代码后,用上面的方法,查看是否使用了过高版本API)


注意点:当出现过时的api时,要注意compatiability(兼容性) 
用Build.VERSION.SDK_INT来判断使用新的api和旧的api

(旧的和新的都要使用,或直接使用过时的API)


 对于一些过时的API,一般都有相应的高版本的API来替代,性能可能更好。

可以根据不同的手机版本,来使用相应的API

如:

if(Build.VERSION.SDK_INT > 15)
{

   //使用新的API

setBackground (Drawable background)

}else{

   //使用旧的API

setBackgroundDrawable (Drawable background)

}


有时,高版本的API对应的低版本API,并不好找

可以尝试:

1.查看高版本API的源码,内部是怎么实现,可能内部就是使用的低版本的API,明白实现的机制,自己来实现。.

2. 百度 ,google(google最好用英文来搜索)


如果有错误的地方,请提出,谢谢。



转载自: http://blog.csdn.net/yangqingqo/article/details/37054585


这篇关于android 兼容API的检查的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1141474

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

一分钟带你上手Python调用DeepSeek的API

《一分钟带你上手Python调用DeepSeek的API》最近DeepSeek非常火,作为一枚对前言技术非常关注的程序员来说,自然都想对接DeepSeek的API来体验一把,下面小编就来为大家介绍一下... 目录前言免费体验API-Key申请首次调用API基本概念最小单元推理模型智能体自定义界面总结前言最

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加