Android应用更新广播

use*_*720 6 android broadcastreceiver

因此,我正在开展一些工作,需要我知道设备上的另一个应用程序何时正在更新.所以我的问题很简单,让我们说YouTube或Spotify在应用程序更新时发送广播,如果是这样,我需要抓住我的broadcastReceiver.

小智 12

您的意图过滤器应该是:

<intent-filter>
   <action android:name="android.intent.action.PACKAGE_REPLACED" />
   <data android:scheme="package" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)

来自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
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 还要检查另一个正在使用“ MY_PACKAGE_REPLACED”的答案 (2认同)

Ash*_*ohn 7

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

<intent-filter>
   <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
   <data android:scheme="package" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)

BroadcastReceiver 的 onReceive 方法应该是:

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

}
Run Code Online (Sandbox Code Playgroud)

  • 我相信正确的答案是删除: `&lt;data android:scheme="package" /&gt;` 并保持其余部分不变 - 发现在此处的另一个线程上似乎可以工作。 (4认同)