Android应用更新广播

问题描述 投票:5回答:3

因此,即时通讯上的东西,我需要知道什么时候该设备上的其他应用程序更新工作。所以我的问题很简单,确实可以说,YouTube或Spotify的发送广播时,应用程序更新,如果是的话,我需要什么,以赶上我的广播接收器。

android broadcastreceiver
3个回答
12
投票

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

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

从你的广播接收器的onReceive方法应该是:

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

4
投票

ACTION_PACKAGE_REPLACED是当一个应用程序被根据文档更新动作触发:

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

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

使用intent.getData()返回更新包作为一个开放的

添加下面的意图过滤器,而注册在你的Manifest.xml广播接收器

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

2
投票

根据Android的文档:广播事件:您的应用程序的新版本已经安装在现有的一个。这是只发到被替换的应用。它不包含任何额外的数据;接受它,只需使用一个意图过滤器进行此操作。

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

从你的广播接收器的onReceive方法应该是:

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

}
© www.soinside.com 2019 - 2024. All rights reserved.