根据下面的答案编辑,我将清单更改为:
<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设置。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
TIA!
右键单击您的项目,单击Properties,然后单击Android,选中Android 4.2,Eclipse将加载4.2所需的所有内容,所有内容都应该编译。