如何知道我的Android应用程序已升级,以重置警报?
我注意到,当设置这个警报的应用程序已经升级时,警报被禁用。 真的吗 ?
到目前为止,我用SharedPreferences
和FIRST_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>
- 更新到Android构build工具后的IncompatibleClassChangeError 25.1.6 GCM / FCM
- Android工作室错误“检测到不支持的模块:以下模块不支持编译”
- 带有Google Maps API v2的ViewPager:神秘的黑色视图
- 在Eclipse的Android设备中没有看到Nexus7
- Android:缩放可绘制或背景图片?
- 错误:任务':ProjectName:mergeDebugResources'的执行失败。 >嘎吱嘎吱的Cruncher *一些文件*失败,看到日志
- “onMenuItemSelected”和“onOptionsItemSelected”之间的区别
- SpannableStringBuilder创buildstring与多个字体/文本大小等。
- 如何让ndk-gdb在Android上工作?