如何知道Intent ACTION_TIME_CHANGED来自直接用户交互

时间:2015-01-23 12:39:45

标签: android android-intent intentfilter

如何知道Intent ACTION_TIME_CHANGED来自直接用户交互。

我尝试从Intent检查标志FLAG_FROM_BACKGROUND,但总是为0,即使Intent是由同步网络触发的。

任何帮助?

谢谢!

1 个答案:

答案 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_TIMESettings.Global.getString()

如在Settings.Global中的API 17中所述:

应用程序可以读取这些但不允许写入

所以我认为检测是否启用了通过网络获取时间应该没问题。如果可行,您可以使用ACTION_TIME_CHANGED处理BroadCast,并在更改时间时检查设置中是否启用了此选项。因此,您可以知道用户或系统是否更改了它。

无论如何,这只是一个想法,我现在无法测试它,因为我这里没有IDE。