导致Intent.ACTION_PACKAGE_CHANGED广播的事件是什么?

时间:2014-07-30 11:22:31

标签: android android-intent

背景

我有一个app-manager替代应用,需要监控操作系统的某些应用更改。

原因是知道何时更新应用列表的信息。

我的应用收听的其中一个事件是Intent.ACTION_PACKAGE_CHANGED。

问题

Intent.ACTION_PACKAGE_CHANGED documentation说的话过于笼统:

  

广播操作:现有的应用程序包已更改   (例如,已启用或禁用某个组件)。数据包含   包裹的名称。

他们只提供了一个关于何时被调用(应用程序启用/禁用)的示例,但根据我所看到的,这实际上是导致它的唯一事件。

问题

除了被禁用/启用的应用程序之外还有哪些其他事件导致此意图被触发?

另外,我没有得到这部分文档:

  

EXTRA_DONT_KILL_APP包含布尔字段以覆盖默认值   重启应用程序的行动。

这究竟是什么意思?

1 个答案:

答案 0 :(得分:0)

我认为启用\禁用Receivers等应用程序组件也会激发此意图:

boolean batteryLow = intent.getAction().equals(Intent.ACTION_BATTERY_LOW);

PackageManager pm = context.getPackageManager();
ComponentName passiveLocationReceiver = new ComponentName(context, PassiveLocationChangedReceiver.class);

// Disable the passive location update receiver when the battery state is low.
// Disabling the Receiver will prevent the app from initiating the background
// downloads of nearby locations.
pm.setComponentEnabledSetting(passiveLocationReceiver,
  batteryLow ? PackageManager.COMPONENT_ENABLED_STATE_DISABLED : PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,
  PackageManager.DONT_KILL_APP);

看看消息来源 https://code.google.com/p/android-protips-location/source/browse/trunk/src/com/radioactiveyak/location_best_practices/

并查看相应的文章 http://android-developers.blogspot.ru/2011/06/deep-dive-into-location.html