我在Manifest中注册了一个全局广播接收器,当用户卸载软件包时会显示通知。
<receiver android:name=".YourReceiver">
<intent-filter android:priority="999">
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<action android:name="android.intent.action.PACKAGE_INSTALL" />
<action android:name="android.intent.action.PACKAGE_REPLACED"/>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="com.times.REFRESH_INSTALL_FLAG" />
<data android:scheme="package" />
</intent-filter>
</receiver>
问题是当某些软件包从Play商店更新操作时 android.intent.action.PACKAGE_REMOVED 和 android.intent.action.PACKAGE_ADDED 会一个接一个地调用。
问题在于我无法区分软件包是否已卸载或更新。
其中一种方法是等到我们收到相同包裹名称的 PACKAGE_ADDED ,然后解除通知。
有没有其他正确的方法来实现这个目标?
答案 0 :(得分:1)
自己搞定!通过检查是否安装了收到的包名来区分!
答案 1 :(得分:1)
您还可以检查意图上的EXTRA_REPLACING(如果它是PACKAGE_REMOVED
意图)。
公共静态最终字符串EXTRA_REPLACING
在ACTION_PACKAGE_REMOVED意图中用作布尔额外字段 表示这是软件包的替代品,因此此广播 紧随其后的是另外一个广播 同一软件包的版本。