Android:ACTION_PACKAGE_FULLY_REMOVED与ACTION_PACKAGE_REMOVED之间的差异

时间:2013-07-16 10:41:49

标签: android broadcastreceiver package

我发现了2个类似的广播事件ACTION_PACKAGE_FULLY_REMOVEDACTION_PACKAGE_REMOVED。但是有什么用例差异?如果我想在卸载软件包时收到广播事件,它们之间的真正区别是什么?

请注意:我是关于Android开发和学习的新手。

2 个答案:

答案 0 :(得分:1)

请参阅高亮代码,以及它们之间的区别......

ACTION_PACKAGE_REMOVED - :广播操作:已从设备中删除现有的应用程序包。数据包含包的名称。正在安装的软件包不会收到此Intent。

ACTION_PACKAGE_FULLY_REMOVED - :广播操作:已从设备中完全删除现有的应用程序包。数据包含包的名称。这类似于ACTION_PACKAGE_REMOVED,,但仅在EXTRA_DATA_REMOVED为true且EXTRA_REPLACING为该广播的false时设置。

答案 1 :(得分:1)

如android.googlesource.com/platform/packages/services/Telecomm所述:

  

此类侦听{@code PACKAGE_FULLY_REMOVED}意图而不是   {@code PACKAGE_REMOVED}在重新安装同一个软件包时触发{@code PACKAGE_REMOVED},只有在完全卸载应用程序时才会触发{@code PACKAGE_FULLY_REMOVED}。

因此,对于完全卸载,我们只需要PACKAGE_FULLY_REMOVED。 PACKAGE_REMOVED甚至会触发重新安装。

然而基于测试,PACKAGE_FULLY_REMOVED由于某种原因不会每次都触发,我认为这是因为unintalled包没有任何extradata。需要更多的测试来证明这一点。