gpt4 book ai didi

java - Android AlarmManager - 从另一个 Activity 取消

转载 作者:行者123 更新时间:2023-12-02 07:52:33 25 4
gpt4 key购买 nike

我有一个“作业计划器”应用程序,我想为其创建一个警报,以提醒用户前一天晚上/某个特定时间的作业。我有一个名为 AddNewHomework 的 Activity ,用户可以在其中创建新的作业项目并将其添加到数据库中。然后调用此代码。

Intent i = new Intent(this, AlarmNotificationReceiver.class);
i.putExtra("title", title);
PendingIntent pi = PendingIntent.getBroadcast(this.getApplicationContext(), (int) id, i, 0);
AlarmManager mAlarm = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
mAlarm.set(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis() + 10 * 1000, pi);

这将创建一个新的警报,该警报将在 10 秒内触发并创建通知。

我的问题是我有另一个名为 HomeworkList 的 Activity ,它包含一个 ListView 并显示数据库中存储的所有作业。如果用户长按某个警报,则他们可以选择将其删除,但是从数据库中删除它并不会消除警报。

我已经寻找了可以用来删除警报的代码,但是我没有找到任何可以让我了解如何从这个不同的 Activity 中取消警报的代码。我知道我需要使 PendingIntent 相同,但是我该如何做到这一点,因为我无法从其他类访问上下文。 (我不这么认为)。

最佳答案

如果有帮助,您可以通过为当前上下文创建静态 getter 从另一个 Activity 访问您的上下文。在上面的类中,只需创建一个私有(private)字段:

private static Context context;

public static Context getAppContext(){
return MyActivity.context;
}

然后,只需在onCreate方法中添加a:

MyActivity.context = getApplicationContext();

从另一个 Activity 访问上下文现在非常容易。您可以使用从“MyActivity”检索到的上下文来取消闹钟。

关于java - Android AlarmManager - 从另一个 Activity 取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com