【发布时间】:2012-08-06 22:01:23
【问题描述】:
如果您转到“设置”->“关于手机”->“检查更新”,则会启动检查以查看是否有任何系统更新可供您的手机使用。
如何以编程方式执行此操作?此外,我正在尝试找出在 Android 源代码中发生这种情况的位置,以便我可以完全看到它并更好地理解它。有人有什么建议吗?
【问题讨论】:
如果您转到“设置”->“关于手机”->“检查更新”,则会启动检查以查看是否有任何系统更新可供您的手机使用。
如何以编程方式执行此操作?此外,我正在尝试找出在 Android 源代码中发生这种情况的位置,以便我可以完全看到它并更好地理解它。有人有什么建议吗?
【问题讨论】:
据我所知,没有已知的广播、意图或 API 可以以编程方式执行此操作。
这取决于 ROM 和制造商。
例如,Sony 使用一项服务,当 wifi 被激活时,该服务会检查 Sony 的服务器是否有任何更新并通知它。
但在谈到 AOSP 源时,我认为不会发生这种情况。
系统更新的最近点在packages/apps/Settings/src/com/android/settings/DeviceInfoSettings.java
专业提示:在res/values 目录中查找字符串“系统更新”,然后查找字符串变量标识符的使用位置!
编辑:
这是一个广播接收器示例:
public class SystemUpdateClass extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent){
if (intent.getAction().equals("android.settings.SYSTEM_UPDATE_SETTINGS")){
Toast.makeText(context,
"Yup! Received a system update broadcast",
Toast.LENGTH_SHORT).show();
}
}
}
这是一个示例代码,来自活动的onCreate:
SystemUpdateClass sysUpdate = new SystemUpdateClass();
IntentFilter filter = new IntentFilter();
filter.addAction("android.settings.SYSTEM_UPDATE_SETTINGS");
registerReceiver(sysUpdate, filter);
现在,应该发生的是您的应用应该接收广播,除非我误认为广播仅适用于系统签名的应用...但是其余的留作练习 :)
【讨论】:
updatePreferenceToSpecificActivityOrRemove 的偏好,我看不到对那个意图的引用,因为你要声称......对你的挑战 - 对该意图字符串的来源。正如我所说,它依赖于 ROM 和制造商,也许在 Sony/Samsung/Motorola/HTC 使用他们自己的自定义广播或修改以满足他们的需求!