Android应用更新广播



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

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

<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
    }
}

根据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
}

action_package_replace是应用程序更新时触发的动作根据文档:

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

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

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

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

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

最新更新