我的应用程序几乎就要完成了,但我发现一个问题:每次更新后,用户设置的所有闹钟都会失效。我进行了大量研究,并得知在清单文件中使用包替换可以检测更新并接收广播。以下是我在清单文件中添加的代码,我已经测试过,当我在gradle中更改versioncode时,它会发送广播:
<receiver
android:name=".AppUpdateHandler"
android:exported="false">
<intent-filter android:priority="900">
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
<data android:scheme="package" />
</intent-filter>
<intent-filter android:priority="1000">
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
现在接下来是我用来设置闹钟的代码,
public void setalarm() {
Intent intent = new Intent(Settings.this, AlarmReceiver.class);
final PendingIntent pendingIntent = PendingIntent.getBroadcast(this, AlarmReceiver.receivercode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
userdefinedinterval = sharedPreferences.getString("date", "");
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime(), Integer.parseInt(userdefinedinterval) * 60 * 60 * 24 * 1000, pendingIntent);
}
我了解和了解PendingIntent IDs,对于我的情况是AlarmReceiver.receivercode。但现在需要帮助我在更新后如何保持应用程序闹钟的活动状态。我是否需要通过广播调用所有闹钟来捕获更新状态或其他可能性。还有一件事,我也在清单中添加了完成引导启动,以便闹钟在重新启动后继续工作。在这里,我通过SharedPreferences检查与闹钟相关的每个选项的状态,然后相应地触发闹钟。我是否需要以同样的方式处理更新?