【问题标题】:Programmatically check for Android OTA system updates以编程方式检查 Android OTA 系统更新
【发布时间】:2012-08-06 22:01:23
【问题描述】:

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

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

【问题讨论】:

    标签: android ota


    【解决方案1】:

    据我所知,没有已知的广播、意图或 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);
    

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

    【讨论】:

    • 我得到的最远的是: 来自 /packages/apps/Settings/res/xml/device_info_settings.xml 的 system_update_settings 键
    • 我需要找到系统活动的代码,该代码具有此操作的意图过滤器(android.settings.SYSTEM_UPDATE_SETTINGS)。有什么建议如何找到它?
    • 再次阅读我的答案,没有已知的广播/意图或 API 可用。 :) 你可以尝试做的是创建一个小应用程序来注册该广播,看看会发生什么 - 如果你的小应用程序接收到广播 - 然后做任何必要的事情......关于我所说的,制造商使用他们自己的实现...
    • 那么,换句话说,在 AOSP 中,android.settings.SYSTEM_UPDATE_SETTINGS 动作是广播的,但还没有活动接收它?我对此表示怀疑,因为grepcode.com/file/repository.grepcode.com/java/ext/… 第 101 行使用 PackageManager 来查找过滤操作的所有活动,并且像 106 一样选择第一个是系统活动的活动。在某个地方,有一个带有意图过滤器的系统活动,用于过滤 android.settings.SYSTEM_UPDATE_SETTINGS 操作。
    • 是的,没错,没有活动接收到该广播!至于 grepcode linky 中的 Utils 源,这是为了解决对活动 updatePreferenceToSpecificActivityOrRemove 的偏好,我看不到对那个意图的引用,因为你要声称......对你的挑战 - 对该意图字符串的来源。正如我所说,它依赖于 ROM 制造商,也许在 Sony/Samsung/Motorola/HTC 使用他们自己的自定义广播或修改以满足他们的需求!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 2013-08-21
    • 2010-10-13
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多