我有一个app-manager替代应用,需要监控操作系统的某些应用更改。
原因是知道何时更新应用列表的信息。
我的应用收听的其中一个事件是Intent.ACTION_PACKAGE_CHANGED。
Intent.ACTION_PACKAGE_CHANGED documentation说的话过于笼统:
广播操作:现有的应用程序包已更改 (例如,已启用或禁用某个组件)。数据包含 包裹的名称。
他们只提供了一个关于何时被调用(应用程序启用/禁用)的示例,但根据我所看到的,这实际上是导致它的唯一事件。
除了被禁用/启用的应用程序之外还有哪些其他事件导致此意图被触发?
另外,我没有得到这部分文档:
EXTRA_DONT_KILL_APP包含布尔字段以覆盖默认值 重启应用程序的行动。
这究竟是什么意思?
答案 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);
并查看相应的文章 http://android-developers.blogspot.ru/2011/06/deep-dive-into-location.html