如何知道我的Android应用程序已升级,以重置警报?

我注意到,当设置这个警报的应用程序已经升级时,警报被禁用。 真的吗 ?

到目前为止,我用SharedPreferencesFIRST_RUN键来知道它是否是我的应用程序的第一次运行。 如果我没有find这个键,我启用闹钟并将FIRST_RUN设置为false,否则我什么都不做。

但我也注意到这些偏好在应用程序升级之间保持不变!

所以在升级之后, FIRST_RUN键已经是假的了,所以我什么也不做,而我的闹钟需要启用。

如何处理这种情况?

提前致谢

我从来没有尝试过这个,但是如何创build一个侦听ACTION_PACKAGE_REPLACED Intent的BroadcastReceiver呢?

我以前想过尝试这个,但是我不确定是否存在鸡与鸡的问题(例如,在新升级的应用程序可以接收之前发送意向?)。 值得一试,但。

解决schemeDaniel Lew:

在清单中需要具有以下行的接收者:

 <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

简单地说,听取android.intent.action.MY_PACKAGE_REPLACED …这个INTENT会通知你,如果你的应用程序的新版本已经安装在现有的

注意:这个意图可以从API 12开始

对于Android OS v12及以上版本,您需要注册BroadcastReceiver ACTION_MY_PACKAGE_REPLACED

 <receiver android:name=".MyBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.MY_PACKAGE_REPLACED" /> </intent-filter> </receiver>