我写的大部分应用程序都很好,最小API级别设置为7.我想从8级调用单个API。具有较低版本的android的用户将在没有这个“额外功能”的情况下继续存在。
目前我添加了@SuppressLint("NewApi")
以便我的代码可以运行;我正在API 14上测试它。一切正常。
我想知道该应用在API 7设备上的行为。这一行会被忽略吗?我的应用会崩溃吗?该应用是否会被Google Play过滤,因此无法安装?
我想在较低的设备上忽略这一行。
答案 0 :(得分:11)
这一行会被忽略吗?
没有
我的应用会崩溃吗?
Spectactularly。 : - )
Google Play是否会对应用进行过滤,以便他们无法安装?
没有
我希望在较低的设备上忽略此单行。
你有两个问题:
@SuppressLint("NewApi")
是错误的快速修复选择
您没有添加任何代码以避免在旧设备上使用此行
使用@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停止向您大吼大叫,引用一个过于新的类或方法。
答案 1 :(得分:3)
最好将其包裹起来
import android.os.Build;
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.ECLAIR_MR1) {
// do what you want
}
答案 2 :(得分:1)
如果您没有if语句来检查API以便在API == 7时忽略它,您的应用程序将会崩溃。我正在使用4.0到4.2设备并使用飞行模式进行一些测试,在API 4.1中以下是Settings.System
,但在4.2中,它位于Settings.Global
之下。如果我尝试拨错了,应用程序就会崩溃。