6

如果您转到“设置”->“关于手机”->“检查更新”,则会启动检查以查看是否有任何系统更新可供您的手机使用。

如何以编程方式执行此操作?此外,我正在尝试找出在 Android 源代码中发生这种情况的位置,以便我可以完全看到它并更好地理解它。有没有人有什么建议?

4

1 回答 1

9

据我所知,没有已知的广播、意图或 API 可以以编程方式执行此操作。

这取决于ROM和制造商。

例如,索尼使用一项服务,当 wifi 被激活时,该服务会检查索尼的服务器是否有任何更新并通知它。

但是当谈到 AOSP 源时,我认为不会发生这种情况。

最近的系统更新点位于packages/apps/Settings/src/com/android/settings/DeviceInfoSettings.java

提示:在目录中使用 grep 字符串“系统更新”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);

现在,应该发生的是您的应用程序应该接收广播,除非我误认为广播仅适用于系统签名的应用程序......但是其余的留作练习:)

于 2012-08-06T22:23:37.297 回答