根据下面的答案进行编辑,我将清单更改为:
<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
蒂亚!