我注意到,当设置此警报的应用程序已升级时,将禁用警报.真的吗 ?
到目前为止,我使用了SharedPreferences一个FIRST_RUN键,以便知道它是否是我的应用程序的第一次运行.如果我找不到这个键,我启用闹钟并设置FIRST_RUN为false,否则我什么都不做.
但我也注意到这些偏好在应用升级之间保持不变!
所以在升级之后,FIRST_RUN密钥已经是假的,所以当我的警报需要启用时我什么都不做.
如何处理这种情况?
提前致谢
tbr*_*lle 89
Daniel 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>
Run Code Online (Sandbox Code Playgroud)
android:path用于防止OnUpgradeReceiver任何应用程序的任何升级触发.
Dan*_*Lew 58
我自己从未尝试过这个,但是创建一个BroadcastReceiver倾听ACTION_PACKAGE_REPLACEDIntent的内容呢?
我之前想过尝试过这个,但我不确定它是否存在鸡与蛋的问题(例如,在新升级的应用程序可以接收之前,Intent是否会被发送?).值得一试.
Sam*_*awy 21
简单地说,听听android.intent.action.MY_PACKAGE_REPLACED... INTENT如果您的应用程序的新版本已安装在现有版本上,则会通知您
注意:此意图可从API 12开始提供
arm*_*n13 20
对于Android OS v12及更高版本,您需要使用操作ACTION_MY_PACKAGE_REPLACED注册BroadcastReceiver
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26116 次 |
| 最近记录: |