0

根据下面的答案进行编辑,我将清单更改为:

<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="17" />

创建方法:

@TargetApi(17)
private static boolean isAirplaneModeOn17(Context context) {
   return Settings.Global.getInt(context.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0) == 1;
}

但是,当我清理项目时,我仍然收到“Settings.Global 无法解析或不是字段”。想法?


我有一个应用程序,我使用以下代码读取飞行模式状态:

return Settings.System.getInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0) == 1;

这适用于我所有的 GB 和 <= 4.1x 使用。

当然,在 API 17 Settings.Global 被引入并且这个位置已经改变。

return boolean airmode = Settings.Global.getInt(context.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0) != 1;

除了在 API17 中获取飞行模式状态可能存在变通方法之外,真正的问题是如何编译一个同时支持从同一个项目中读取 Settings.System 和 Settings.Global 的项目?

当项目构建目标设置为 4.2 API 17 以外的任何内容时,我似乎无法让 Eclipse“忽略”“Settings.Global 无法解析或不是字段”。我知道代码适用于我的 4.2 用户,并具有如下指定设置:

private static boolean isAirplaneModeOn(Context context) {
    if (apiVersion < 17) {
       return Settings.System.getInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0) == 1;
    } else {
       return Settings.Global.getInt(context.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0) == 1;
    }
}

我在清单中弄乱了 min 和 target API,它似乎没有任何影响,Eclipse 仍然不会编译我的项目。

FWIW,这里有一些相关的版本信息:

ADK 21.0.0.v201210310015-519525

Eclipse 版本:4.2.1 构建 ID:M20120914-1800

蒂亚!

4

1 回答 1

2

右键单击您的项目,单击属性,然后单击 Android,选中 Android 4.2,然后 Eclipse 将加载 4.2 所需的所有内容,并且所有内容都应该编译。

于 2012-12-08T17:19:01.297 回答