我注意到,当设置此警报的应用程序升级时,此警报会被禁用。:是真的吗?
到目前为止,为了知道这是否是我的应用程序的第一次运行,我使用了带有FIRST_RUN
密钥的SharedPreferences
。如果我找不到这个键,我将启用警报并将FIRST_RUN
设置为false,否则我什么也不做。
但我也注意到,这些偏好在应用程序升级之间保持不变!
因此,在升级之后,FIRST_RUN
密钥已经是假的,所以当我的警报需要启用时,我什么也不做。
如何处理这样的情况?
提前感谢
发布于 2010-01-26 01:03:35
我自己从来没有尝试过,但是如何创建一个侦听ACTION_PACKAGE_REPLACED
意图的BroadcastReceiver
呢?
我以前也想过这样做,但我不确定这是否存在先有鸡还是先有蛋的问题(例如,意图是否在新升级的应用程序可以接收它之前发送?)。不过,值得一试。
发布于 2010-01-26 02:06:29
丹尼尔·卢的
解决方案:
我需要一个在清单中包含以下行的接收器:
<receiver android:name=".OnUpgradeReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<data android:scheme="package" android:path="your.app.package" />
</intent-filter>
</receiver>
使用android:path
是为了防止任何应用程序的任何升级都会触发OnUpgradeReceiver
。
发布于 2014-02-04 00:35:26
很简单,听一下android.intent.action.MY_PACKAGE_REPLACED
..。如果您的应用程序的新版本已在现有版本上安装,则此INTENT
将通知您
注意:此意图可以从API 12开始提供
https://stackoverflow.com/questions/2133986
复制相似问题