【问题标题】:Android app update broadcastAndroid应用更新广播
【发布时间】:2015-06-09 09:19:51
【问题描述】:

所以,我正在做一些事情,需要我知道设备上的另一个应用程序何时更新。所以我的问题很简单,让我们说 YouTube 或 Spotify 在应用程序更新时发送广播,如果是,我需要用我的广播接收器捕获什么。

【问题讨论】:

    标签: android broadcastreceiver


    【解决方案1】:

    你的意图过滤器应该是这样的:

    <intent-filter>
       <action android:name="android.intent.action.PACKAGE_REPLACED" />
       <data android:scheme="package" />
    </intent-filter>
    

    您的 BroadcastReceiver 中的 onReceive 方法应该是:

    @Override
    public void onReceive(Context context, Intent intent) {
        Uri data = intent.getData();
        if (data.toString().equals("package:" + "com.target.package") {
            // action to do
        }
    }
    

    【讨论】:

    • 检查另一个使用MY_PACKAGE_REPLACED的答案
    【解决方案2】:

    根据 android 文档: 广播操作:您的应用程序的新版本已安装在现有版本之上。这只会发送到被替换的应用程序。它不包含任何附加数据;要接收它,只需为此操作使用意图过滤器。

    <intent-filter>
       <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
       <data android:scheme="package" />
    </intent-filter>
    

    您的 BroadcastReceiver 中的 onReceive 方法应该是:

    @Override
    public void onReceive(Context context, Intent intent) {
        // action to do
    
    }
    

    【讨论】:

    • 我相信正确的答案是删除:&lt;data android:scheme="package" /&gt; 并保持其余部分原样 - 在这里的另一个线程上发现它似乎有效。
    • @Ben,你是对的,&lt;data android:scheme="package" /&gt; 应该被删除
    【解决方案3】:

    ACTION_PACKAGE_REPLACED 是在更新应用程序时触发的操作 根据文档:

    已安装新版本的应用程序包,替换 以前安装的现有版本。数据包含 包的名称。

    intent.getPackage() 返回此意图专门针对的包/应用程序,但它已发送给任何感兴趣的接收者,因此没有这样的包。

    使用 intent.getData() 将更新的包作为 Uri 返回

    在 Manifest.xml 中注册广播接收器时添加以下意图过滤器

    <intent-filter>
       <action android:name="android.intent.action.PACKAGE_REPLACED" />
       <data android:scheme="package" />
    </intent-filter>
    

    【讨论】:

    • 这适用于您自己的应用程序吗?如果您的应用已更新,广播接收器会执行吗?
    • @RobertEstivill 刚刚测试过。会的。
    • 不幸的是,当我更新自己的应用程序时它不起作用。
    猜你喜欢
    • 2012-04-07
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    相关资源
    最近更新 更多