# Android API概览 Android API(Application Programming Interface)是Android平台提供的编程接口集合,开发者可以使用这些API来构建Android应用。本文档提供Android API的全面概览。 ## 目录 - [API分类](#api分类) - [API版本](#api版本) - [API使用指南](#api使用指南) - [API参考链接](#api参考链接) --- ## API分类 Android API按照功能和用途可以分为以下几大类: ### 1. 核心组件API Android应用的四大核心组件及其相关API: #### Activity API - **用途**:用户界面组件,代表应用中的一个屏幕 - **主要类**:`Activity`, `AppCompatActivity` - **核心方法**:`onCreate()`, `onStart()`, `onResume()`, `onPause()`, `onStop()`, `onDestroy()` - **相关文档**:[核心API - Activity](核心API.md#activity-api) #### Service API - **用途**:后台服务组件,执行长时间运行的任务 - **主要类**:`Service`, `IntentService`, `JobIntentService` - **核心方法**:`onCreate()`, `onStartCommand()`, `onBind()`, `onDestroy()` - **相关文档**:[核心API - Service](核心API.md#service-api) #### BroadcastReceiver API - **用途**:广播接收器,接收系统或应用发送的广播消息 - **主要类**:`BroadcastReceiver` - **核心方法**:`onReceive()` - **相关文档**:[核心API - BroadcastReceiver](核心API.md#broadcastreceiver-api) #### ContentProvider API - **用途**:内容提供者,在不同应用间共享数据 - **主要类**:`ContentProvider`, `ContentResolver` - **核心方法**:`query()`, `insert()`, `update()`, `delete()`, `getType()` - **相关文档**:[核心API - ContentProvider](核心API.md#contentprovider-api) ### 2. UI组件API #### View和ViewGroup - **用途**:构建用户界面的基础组件 - **主要类**:`View`, `ViewGroup`, `TextView`, `Button`, `ImageView`, `RecyclerView` - **包名**:`android.view.*`, `android.widget.*` #### Fragment API - **用途**:模块化的UI片段 - **主要类**:`Fragment`, `FragmentManager`, `FragmentTransaction` - **核心方法**:`onCreateView()`, `onViewCreated()`, `onActivityCreated()` - **相关文档**:[核心API - Fragment](核心API.md#fragment-api) #### Material Design组件 - **用途**:Material Design风格的UI组件 - **主要类**:`MaterialButton`, `MaterialCardView`, `FloatingActionButton` - **包名**:`com.google.android.material.*` ### 3. Jetpack API Jetpack是Android官方提供的库集合,包含多个组件: #### 架构组件 - **ViewModel**:管理UI相关的数据 - **LiveData**:可观察的数据持有者 - **Room**:SQLite数据库抽象层 - **WorkManager**:后台任务管理 - **Navigation**:应用内导航 - **相关文档**:[Jetpack API](Jetpack_API.md) #### UI组件 - **Jetpack Compose**:声明式UI工具包 - **ViewPager2**:页面滑动组件 - **相关文档**:[Jetpack API](Jetpack_API.md) #### 其他组件 - **Data Binding**:数据绑定库 - **Lifecycle**:生命周期感知组件 - **Paging**:分页加载数据 - **相关文档**:[Jetpack API](Jetpack_API.md) ### 4. 系统服务API #### 系统服务 - **ActivityManager**:Activity管理服务 - **WindowManager**:窗口管理服务 - **NotificationManager**:通知管理服务 - **LocationManager**:位置管理服务 - **TelephonyManager**:电话管理服务 - **相关文档**:[系统API](系统API.md) #### 系统功能 - **权限管理**:运行时权限申请 - **文件系统**:文件读写操作 - **网络通信**:HTTP/HTTPS请求 - **传感器**:设备传感器数据 - **相关文档**:[系统API](系统API.md) ### 5. 数据存储API #### SharedPreferences - **用途**:键值对数据存储 - **主要类**:`SharedPreferences`, `SharedPreferences.Editor` #### SQLite数据库 - **用途**:关系型数据库存储 - **主要类**:`SQLiteDatabase`, `SQLiteOpenHelper` - **推荐使用**:Room(Jetpack组件) #### 文件存储 - **用途**:文件读写操作 - **主要类**:`File`, `FileInputStream`, `FileOutputStream` #### ContentProvider - **用途**:跨应用数据共享 - **相关文档**:[核心API - ContentProvider](核心API.md#contentprovider-api) ### 6. 网络通信API #### HTTP客户端 - **HttpURLConnection**:标准HTTP客户端 - **OkHttp**:第三方HTTP客户端(推荐) - **Retrofit**:RESTful API客户端(推荐) #### WebSocket - **用途**:实时双向通信 - **主要类**:`WebSocket`, `WebSocketClient` ### 7. 多媒体API #### 媒体播放 - **MediaPlayer**:音频/视频播放 - **ExoPlayer**:高级媒体播放器(推荐) #### 相机 - **Camera API**:相机操作(已废弃) - **CameraX**:现代相机API(推荐) #### 图像处理 - **Bitmap**:位图操作 - **Canvas**:画布绘制 ### 8. Intent和导航API #### Intent API - **用途**:组件间通信和启动 - **主要类**:`Intent`, `IntentFilter` - **核心方法**:`putExtra()`, `getExtra()`, `setAction()`, `setData()` - **相关文档**:[核心API - Intent](核心API.md#intent-api) #### 导航 - **Navigation Component**:应用内导航(Jetpack) - **Deep Linking**:深度链接 --- ## API版本 Android API按照Android版本进行版本控制,每个Android版本对应一个API级别(API Level)。 ### API级别说明 API级别是一个整数,唯一标识Android平台版本的框架API修订版。API级别用于: - 指定应用支持的最低Android版本 - 指定应用目标编译的Android版本 - 判断API是否可用 ### Android版本与API级别对照表 | Android版本 | API级别 | 版本代号 | 发布时间 | 主要特性 | |------------|---------|----------|----------|----------| | Android 15 | API 35 | Vanilla Ice Cream | 2024 | 部分媒体访问、通知权限增强 | | Android 14 | API 34 | Upside Down Cake | 2023 | 部分媒体访问、通知权限 | | Android 13 | API 33 | Tiramisu | 2022 | 通知权限、运行时权限细化 | | Android 12L | API 32 | Snow Cone v2 | 2022 | 大屏设备优化 | | Android 12 | API 31 | Snow Cone | 2021 | Material You、隐私面板 | | Android 11 | API 30 | Red Velvet Cake | 2020 | 包可见性、分区存储 | | Android 10 | API 29 | Quince Tart | 2019 | 分区存储、深色主题 | | Android 9 | API 28 | Pie | 2018 | 自适应图标、通知渠道 | | Android 8.1 | API 27 | Oreo | 2017 | 通知渠道、后台限制 | | Android 8.0 | API 26 | Oreo | 2017 | 通知渠道、后台限制 | | Android 7.1 | API 25 | Nougat | 2016 | 多窗口、通知增强 | | Android 7.0 | API 24 | Nougat | 2016 | 多窗口、通知增强 | | Android 6.0 | API 23 | Marshmallow | 2015 | 运行时权限、Doze模式 | | Android 5.1 | API 22 | Lollipop | 2015 | Material Design | | Android 5.0 | API 21 | Lollipop | 2014 | Material Design、ART运行时 | ### 版本兼容性 #### minSdkVersion - **作用**:指定应用支持的最低Android版本 - **设置**:在`build.gradle`中配置 - **示例**:`minSdkVersion 21`(支持Android 5.0及以上) #### targetSdkVersion - **作用**:指定应用目标编译的Android版本 - **设置**:在`build.gradle`中配置 - **示例**:`targetSdkVersion 34`(目标Android 14) #### compileSdkVersion - **作用**:指定编译时使用的SDK版本 - **设置**:在`build.gradle`中配置 - **示例**:`compileSdkVersion 34`(使用Android 14 SDK编译) ### API版本检查 ```java // 检查API级别 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // API 23 (Android 6.0) 及以上可用 // 例如:运行时权限 } // 使用@RequiresApi注解 @RequiresApi(Build.VERSION_CODES.O) private void useNotificationChannel() { // 需要API 26 (Android 8.0) 及以上 } ``` ### 版本特定API 不同Android版本引入了新的API和功能: #### Android 6.0 (API 23) - 运行时权限:`checkSelfPermission()`, `requestPermissions()` - Doze模式:省电优化 #### Android 8.0 (API 26) - 通知渠道:`NotificationChannel` - 后台限制:后台服务限制 #### Android 10 (API 29) - 分区存储:`Scoped Storage` - 深色主题:系统级深色模式 #### Android 11 (API 30) - 包可见性:``声明 - 分区存储:强制执行 #### Android 12 (API 31) - Material You:动态颜色 - 隐私面板:权限使用透明化 #### Android 13 (API 33) - 通知权限:运行时申请 - 运行时权限细化 #### Android 14 (API 34) - 部分媒体访问:细化媒体权限 - 通知权限增强 --- ## API使用指南 ### 1. 查找API文档 #### 官方API参考 - **网址**:https://developer.android.com/reference - **内容**:所有Android API的完整文档 - **搜索**:可按类名、方法名搜索 #### Android Studio中的使用 - **快速文档**:鼠标悬停在API上查看文档(Ctrl+Q / Cmd+J) - **跳转到定义**:Ctrl+点击 / Cmd+点击 - **查看使用示例**:右键菜单选择"Find Usages" ### 2. 理解API文档结构 API文档通常包含以下部分: #### 类概述 - **类名**:类的完整名称 - **包名**:类所在的包 - **继承关系**:类的继承层次 - **实现接口**:类实现的接口 - **类描述**:类的用途和功能说明 #### 常量 - **常量列表**:类中定义的常量 - **常量值**:常量的具体值 - **常量说明**:常量的用途 #### 构造方法 - **构造方法列表**:可用的构造方法 - **参数说明**:构造方法的参数 - **使用示例**:构造方法的使用示例 #### 方法 - **方法签名**:方法名、参数、返回值 - **方法描述**:方法的功能说明 - **参数说明**:每个参数的含义 - **返回值说明**:返回值的含义 - **异常说明**:可能抛出的异常 - **使用示例**:方法的使用示例 #### 相关API - **相关类**:相关的其他类 - **相关方法**:相关的其他方法 ### 3. API使用步骤 #### 步骤1:导入包 ```java import android.app.Activity; import android.content.Intent; import android.os.Bundle; ``` #### 步骤2:检查API可用性 ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // 使用API 23及以上版本的功能 } ``` #### 步骤3:调用API ```java // 创建Intent Intent intent = new Intent(this, MainActivity.class); intent.putExtra("key", "value"); // 启动Activity startActivity(intent); ``` #### 步骤4:处理异常 ```java try { // 使用可能抛出异常的API File file = new File(path); FileInputStream fis = new FileInputStream(file); } catch (FileNotFoundException e) { // 处理异常 e.printStackTrace(); } ``` ### 4. 最佳实践 #### 使用最新API - **推荐**:使用最新的稳定API版本 - **原因**:新API通常性能更好、功能更强 - **注意**:考虑向后兼容性 #### 版本兼容性处理 ```java // 使用Build.VERSION.SDK_INT检查版本 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // 使用Android 8.0及以上版本的API NotificationChannel channel = new NotificationChannel(...); } else { // 使用旧版本API或替代方案 } ``` #### 权限检查 ```java // 使用API前检查权限 if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) { // 使用相机API } else { // 请求权限 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, REQUEST_CODE); } ``` #### 空值检查 ```java // 检查返回值是否为空 Cursor cursor = getContentResolver().query(uri, null, null, null, null); if (cursor != null) { try { // 使用cursor while (cursor.moveToNext()) { // 处理数据 } } finally { cursor.close(); } } ``` #### 资源释放 ```java // 及时释放资源 @Override protected void onDestroy() { super.onDestroy(); if (receiver != null) { unregisterReceiver(receiver); } if (cursor != null) { cursor.close(); } } ``` ### 5. 常见问题 #### Q1: 如何知道某个API在哪个版本可用? **A:** 查看API文档中的"Since"信息,或使用`Build.VERSION.SDK_INT`检查。 #### Q2: 如何处理API废弃? **A:** - 查看文档中的`@Deprecated`注解 - 查看推荐的替代API - 逐步迁移到新API #### Q3: 如何查找API的使用示例? **A:** - 查看官方API文档中的示例代码 - 查看GitHub上的官方示例项目 - 使用Android Studio的"Find Usages"功能 #### Q4: 如何调试API调用问题? **A:** - 使用Log输出调试信息 - 使用Android Studio的调试器 - 查看异常堆栈信息 - 检查权限和配置 --- ## API参考链接 ### 官方API文档 #### 核心API文档 - **Android API参考**:https://developer.android.com/reference - **核心组件API**:https://developer.android.com/reference/android/app/package-summary - **UI组件API**:https://developer.android.com/reference/android/widget/package-summary #### Jetpack API文档 - **Jetpack API参考**:https://developer.android.com/jetpack/androidx/versions - **架构组件**:https://developer.android.com/topic/libraries/architecture - **Jetpack Compose**:https://developer.android.com/jetpack/compose #### 系统API文档 - **系统服务API**:https://developer.android.com/reference/android/app/package-summary - **权限API**:https://developer.android.com/reference/android/Manifest.permission - **系统功能API**:https://developer.android.com/reference/android/os/package-summary ### 版本特定文档 #### Android版本文档 - **Android版本概览**:https://developer.android.com/about/versions - **Android 14**:https://developer.android.com/about/versions/14 - **Android 13**:https://developer.android.com/about/versions/13 - **Android 12**:https://developer.android.com/about/versions/12 - **Android 11**:https://developer.android.com/about/versions/11 - **Android 10**:https://developer.android.com/about/versions/10 #### API级别参考 - **API级别表**:https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels - **版本代码常量**:https://developer.android.com/reference/android/os/Build.VERSION_CODES ### 学习资源 #### 官方指南 - **Android开发者指南**:https://developer.android.com/guide - **API使用指南**:https://developer.android.com/guide/topics/manifest - **最佳实践**:https://developer.android.com/topic/performance/best-practices #### 代码示例 - **官方示例项目**:https://github.com/android - **代码实验室**:https://developer.android.com/codelabs - **架构示例**:https://github.com/android/architecture-samples #### 视频教程 - **Android Developers YouTube**:https://www.youtube.com/user/androiddevelopers - **Google I/O**:https://io.google/ - **Android Dev Summit**:https://developer.android.com/dev-summit ### 工具和资源 #### 开发工具 - **Android Studio**:https://developer.android.com/studio - **SDK管理器**:https://developer.android.com/studio/intro/update - **命令行工具**:https://developer.android.com/studio/command-line #### 社区资源 - **Stack Overflow**:https://stackoverflow.com/questions/tagged/android - **Reddit**:https://www.reddit.com/r/androiddev/ - **官方博客**:https://android-developers.googleblog.com/ ### 快速参考 #### 常用API快速链接 - **Activity**:https://developer.android.com/reference/android/app/Activity - **Service**:https://developer.android.com/reference/android/app/Service - **BroadcastReceiver**:https://developer.android.com/reference/android/content/BroadcastReceiver - **ContentProvider**:https://developer.android.com/reference/android/content/ContentProvider - **Fragment**:https://developer.android.com/reference/androidx/fragment/app/Fragment - **Intent**:https://developer.android.com/reference/android/content/Intent #### 本地文档 - [核心API](核心API.md) - Activity、Service、BroadcastReceiver、ContentProvider、Fragment、Intent - [Jetpack API](Jetpack_API.md) - Jetpack组件API - [系统API](系统API.md) - 系统服务和功能API --- ## 总结 Android API提供了丰富的功能,帮助开发者构建功能强大的Android应用。使用API时需要注意: 1. **版本兼容性**:检查API的最低支持版本 2. **权限管理**:使用需要权限的API前先申请权限 3. **资源管理**:及时释放资源,避免内存泄漏 4. **异常处理**:正确处理可能出现的异常 5. **最佳实践**:遵循官方推荐的最佳实践 建议: - 定期查看官方API文档获取最新信息 - 使用Android Studio的代码提示和文档功能 - 参考官方示例代码学习API使用 - 关注API的废弃和替代方案 --- *最后更新:2024年*