从比最低要求更高的API级别调用API

use*_*613 2 android

我写了一个应用程序的大部分,最小API级别设置为7.我想从8级调用单个API.具有较低版本的android的用户将在没有这个"额外功能"的情况下生存.

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

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

我想在较低的设备上忽略这一行.

Com*_*are 11

这一行会被忽略吗?

没有.

我的应用会崩溃吗?

Spectactularly.:-)

该应用是否会被Google Play过滤,因此无法安装?

没有.

我想在较低的设备上忽略这一行.

你有两个问题:

  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
Run Code Online (Sandbox Code Playgroud)

您的if检查将导致您的线路被避免.您的@TargetApi注释将导致Lint停止向您大吼大叫,引用一个过于新的类或方法.