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

Android 从高于最低要求的API级别调用API,android,Android,我写了一个应用程序的大部分只是罚款最低API水平设置为7。我想从8级调用一个API。android较低版本的用户将在没有这个“额外功能”的情况下生存 目前我添加了@suppressint(“NewApi”),以便我的代码可以运行;我正在API 14上测试它。一切正常 我想知道该应用程序在API 7设备上的表现。这一行会被忽略吗?我的应用程序会崩溃吗?Google Play是否会过滤该应用程序,使其无法安装 我希望在较低的设备上忽略这一行。如果您没有if语句来检查API,以便在API==7时忽略它

我写了一个应用程序的大部分只是罚款最低API水平设置为7。我想从8级调用一个API。android较低版本的用户将在没有这个“额外功能”的情况下生存

目前我添加了
@suppressint(“NewApi”)
,以便我的代码可以运行;我正在API 14上测试它。一切正常

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


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

如果您没有if语句来检查API,以便在API==7时忽略它,那么您的应用程序将崩溃。我使用的是4.0到4.2设备,并使用飞机模式进行了一些测试,在API 4.1和以下版本中,可以在
Settings.System
中找到飞机模式,但在4.2中,飞机模式处于
Settings.Global
下。如果我试着打错电话,应用程序就会崩溃

最好把这件事包起来

import android.os.Build;

if(Build.VERSION.SDK_INT > Build.VERSION_CODES.ECLAIR_MR1) {
    // do what you want
}
这一行会被忽略吗

没有

我的应用程序会崩溃吗

特别地。:-)

Google Play是否会过滤该应用程序,使其无法安装

没有

我希望在较低的设备上忽略这一行

你有两个问题:

  • @suppressint(“NewApi”)
    是错误的快速修复选择

  • 您没有添加任何代码以避免在旧设备上出现此行

  • 使用
    @TargetApi(…)
    而不是
    @suppressint(“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停止对您大喊引用太新的类或方法