我需要检查android设备中是否启用了"自动日期和时间"。如果它没有启用,我需要显示它没有启用的弹出窗口。
有可能实现吗。如果可能,如何检查是否启用?
API 17及以上的链接
android.provider.Settings.Global.getInt(getContentResolver(), android.provider.Settings.Global.AUTO_TIME, 0);
API 16及以下链接
android.provider.Settings.System.getInt(getContentResolver(), android.provider.Settings.System.AUTO_TIME, 0);
public static boolean isTimeAutomatic(Context c) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
return Settings.Global.getInt(c.getContentResolver(), Settings.Global.AUTO_TIME, 0) == 1;
} else {
return android.provider.Settings.System.getInt(c.getContentResolver(), android.provider.Settings.System.AUTO_TIME, 0) == 1;
}
}
我只想指出作弊是可能的(我刚刚在三星Galaxy S4,Android 5.0.1上做了):
- 禁用自动时间
- 断开与互联网的连接(飞机模式,无wifi等)
- 重新启动手机(否则会检索到实时信息)
- 设置自动时间
今天完成:
Unix时间:1129294173
日期:14102005024933
是自动的吗1(使用android.provider.Settings.Global.getInt(getActivity().getContentResolver(),android.previder.Settings.Global.AUTO_TIME,0))
今天肯定不是2005年10月14日
if(Settings.Global.getInt(getContentResolver(), Global.AUTO_TIME) == 1)
{
// Enabled
}
else
{
// Disabed
}
检查是否启用了"自动时间"或"区域"?(Kotlin)
fun isAutoTimeEnabled(activity: Activity) =
Settings.Global.getInt(activity.contentResolver, Settings.Global.AUTO_TIME) == 1
fun isAutoTimeZoneEnabled(activity: Activity) =
Settings.Global.getInt(activity.contentResolver, Settings.Global.AUTO_TIME_ZONE) == 1
在kotlin中,您可以使用
fun isTimeAutomatic(c: Context): Boolean {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
Settings.Global.getInt(c.contentResolver, Settings.Global.AUTO_TIME, 0) == 1
} else {
Settings.System.getInt(c.contentResolver, Settings.System.AUTO_TIME, 0) == 1
}}