如何知道 Intent ACTION_TIME_CHANGED 是否来自直接用户交互
How know if Intent ACTION_TIME_CHANGED is coming from direct user interaction
如何知道 Intent ACTION_TIME_CHANGED 是否来自直接用户交互。
我尝试检查 Intent 中的标志 FLAG_FROM_BACKGROUND,但始终为 0,即使 Intent 是由同步网络触发的。
有什么帮助吗?
谢谢!
我真的不知道它是否有效,我目前无法尝试,但是有设置 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。
如何知道 Intent ACTION_TIME_CHANGED 是否来自直接用户交互。
我尝试检查 Intent 中的标志 FLAG_FROM_BACKGROUND,但始终为 0,即使 Intent 是由同步网络触发的。
有什么帮助吗?
谢谢!
我真的不知道它是否有效,我目前无法尝试,但是有设置 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。