android - 从高于最低要求的 API 级别调用 API

标签 android

我在将最低 API 级别设置为 7 的情况下编写了大部分应用程序。我想从级别 8 调用单个 API。如果没有此“额外功能”,使用较低版本的 android 的用户将能够生存。

目前我添加了 @SuppressLint("NewApi") 以便我的代码可以运行;我正在 API 14 上对其进行测试。一切正常。

我想知道该应用程序在 API 7 设备上的行为。这一行会被忽略吗?我的应用程序会崩溃吗?该应用会被 Google Play 过滤,因此他们无法安装吗?

我希望在低端设备上忽略这一行。

最佳答案

Would this one line be ignored?

没有。

Would my app crash?

壮观。 :-)

Would the app be filtered by Google Play so they can't install?

没有。

I'd like to have this single line ignore on lower devices.

你有两个问题:

  1. @SuppressLint("NewApi") 是错误的快速修复选择

  2. 您没有添加任何代码来避免在旧设备上出现这一行

使用 @TargetApi(...) 而不是 @SuppressLint("NewApi"),其中 ... 是名称(例如,FROYO) 或您的方法引用的代码的编号(例如,8)。

但是你这样做之前,将你的违规行包装在一个检查中,看看它们是否应该在这个设备上执行:

if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.FROYO) {
  // then execute your code that requires API Level 8
}
// optional else block if you have some workaround for API Level 7

您的 if 检查将导致您的线路被避开。您的 @TargetApi 注释将导致 Lint 停止对您大喊大叫引用太新的类或方法。

关于android - 从高于最低要求的 API 级别调用 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16243744/

相关文章:

java - LIBGDX - 碰撞问题和滑动效果问题

Android Eclipse : Traceview, 我只是不明白

android - 如何在 Android Studio (LogCat) 中删除 Chromium 日志

android - 如何在android中卸载应用程序时删除共享首选项

android - 在所有模块 Gradle android 中运行所有单元和检测

android - startActivityForResult 后的 Activity 状态

android - Android 的 JSON 获取 URL 内容

Android Text to Speech 示例失败

android - WCF webHttpBinding 与文件元数据

android - 如何从 2 个 View 模型更新 1 个回收器 View 适配器?