Android 中的向后兼容性和方法

Backwards compatibility and methods in Android

我目前正在更新我维护的库,我想提供一种在方法签名中使用 MediaDataSource 的方法,但这仅在 API 23+ 中可用。我知道 Android 文档指出您应该通过以下检查确保向后兼容性:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    // some API specific code

我也知道可以根据文件夹命名自定义资源,例如 layout-v13。我的问题是,是否可以添加此类检查或类似的检查,以便我的代码仍可在 < API 上运行 23. Android 是否提供如下结构:

@Version Build.VERSION_CODES.HONEYCOMB // not real code, just what I'm thinking
public void setData(MediaDataSource mediaDataSource) {
    // some code
}

是的,通常当您 运行 进入 API compat issues Android 当您按 alt+enter 警告时,Studio 会为您提供多种解决方案。

以 Android 中的 NotificationChannel 为例,仅供奥利奥用户使用 (API 26)。你有以下目标。

选项 1:If else 语句 你已经在你的问题中提到了这一点

选项 2:@目标API 注释

@TargetApi(Build.VERSION_CODES.O)
private void createNotification() {
NotificationChannel notificationChannel = new NotificationChannel("123", "newNotification", NotificationManager.IMPORTANCE_DEFAULT);}

选项 3:@RequiresAPI 注释

@RequiresApi(api = Build.VERSION_CODES.O)
private void createNotification() {
NotificationChannel notificationChannel = new NotificationChannel("123", "newNotification", NotificationManager.IMPORTANCE_DEFAULT);
}