因此,即时通讯上的东西,我需要知道什么时候该设备上的其他应用程序更新工作。所以我的问题很简单,确实可以说,YouTube或Spotify的发送广播时,应用程序更新,如果是的话,我需要什么,以赶上我的广播接收器。
你的意图过滤器应该是这样的:
<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
}
}
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>
根据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
}