如何知道Intent ACTION_TIME_CHANGED来自直接用户交互。
我尝试从Intent检查标志FLAG_FROM_BACKGROUND,但总是为0,即使Intent是由同步网络触发的。
任何帮助?
谢谢!
答案 0 :(得分:2)
我真的不知道它是否有效,我现在不能尝试这个,但是有一个Settings API,你可以获得一些信息。我不确定你是否可以在没有root的情况下阅读它,但试一试。
String isAutoTime = Settings.System.getString(
getContentResolver(),
Settings.System.AUTO_TIME);
boolean autoTimeEnabled = false;
if(isAutoTime.equals("1")){
autoTimeEnabled = true;
}
//usually You don´t need this else statement, because the boolean is
//created as a flase boolean. Just want to show how it works
else if(isAutoTime.equals("0")){
autoTimeEnabled=false;
}
自API 17以来,Settings.System.AUTO_TIME
已弃用,因此您必须Settins.Global.AUTO_TIME
和Settings.Global.getString()
如在Settings.Global中的API 17中所述:
应用程序可以读取这些但不允许写入
所以我认为检测是否启用了通过网络获取时间应该没问题。如果可行,您可以使用ACTION_TIME_CHANGED处理BroadCast,并在更改时间时检查设置中是否启用了此选项。因此,您可以知道用户或系统是否更改了它。
无论如何,这只是一个想法,我现在无法测试它,因为我这里没有IDE。