确保应用程序更新后警报功能正常

3

我的应用程序几乎就要完成了,但我发现一个问题:每次更新后,用户设置的所有闹钟都会失效。我进行了大量研究,并得知在清单文件中使用包替换可以检测更新并接收广播。以下是我在清单文件中添加的代码,我已经测试过,当我在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检查与闹钟相关的每个选项的状态,然后相应地触发闹钟。我是否需要以同样的方式处理更新?

1个回答

0

我已经找到解决方案了。它可以以与我们完成启动时相同的方式完成。只需在更新时调用启动完成接收器类,所有闹钟将根据用户设置重置。 或者只需将闹钟方法复制到更新接收器中,就完成了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接