PACKAGE_REMOVED&然后PACKAGE_ADDED与PACKAGE_REPLACED Intent Action一起被触发

时间:2011-03-07 08:01:17

标签: android broadcastreceiver intentfilter

我要做的就是更新每个Install& amp;的列表。在Package Replace上卸载但。因此,主要问题是Install&每次替换操作都会启动卸载意图。

所以 为此,我实现了一个BroadcastReciever,如下所示

<receiver android:name =".IntentReceiverTest.AppReciever">
  <intent-filter>
         <action android:name="android.intent.action.PACKAGE_REMOVED"/>
         <action android:name="android.intent.action.PACKAGE_REPLACED"/>
         <action android:name="android.intent.action.PACKAGE_ADDED"/>
         <data android:scheme="package"/> 
  </intent-filter>
</receiver> 

在每次替换时,我获得3个带有动作的广播

  • 首先使用激活AppReciever的 PACKAGE_REMOVED
  • 然后在 PACKAGE_ADDED 之后再次触发AppReciever
  • 然后几秒后 PACKAGE_REPLACED 再次触发AppReciever

所以请建议任何更好的方法来捕捉替换行动

通过PACKAGE_REMOVED和PACKAGE_ADDED 操作停止以前启动的服务的方法。

1 个答案:

答案 0 :(得分:29)

只需检查intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)

if (!intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED) &&
    intent.getBooleanExtra(Intent.EXTRA_REPLACING, false))
    return;