在特定日期和时间设置警报

时间:2013-08-17 15:07:15

标签: android alarmmanager

我正在尝试在我的应用程序中设置闹钟。每当闹钟开始时,都会向用户显示AlertDialog

我创建了两个活动:

  • ActivityA是负责设置闹钟的人
  • ActivityB是负责向用户显示AlertDialog窗口
  • 的人

ActivityA:设置闹钟

警报日期存储在alarmDate类型的变量GregorianCalendar中。我使用以下代码创建了警报(在答案here之后):

Intent intent = new Intent(this, ActivityB.class);
intent.putExtra(ActivityB.ALARM_MESSAGE, message);
PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, alarmDate.getTimeInMillis(), pendingIntent);

ActivityB:处理请求

public void onCreate(Bundle savedInstanceState) {
    Intent intent = getIntent();
    String message = intent.getStringExtra(ALARM_MESSAGE);      
    AlertDialog dialog = new AlertDialog.Builder(this).setMessage(message)
                       .setPositiveButton("OK", new DialogInterface.OnClickListener()...)
                       .create();
    dialog.show();
    finish();
}

问题

我遇到了一个问题:ActivityB无法捕获意图。因此,我认为它永远不会创建,我错过了如何启动它。

此外,我认为这不是最理想的解决方案,因为我需要警报来显示AlertDialog窗口,以防应用程序未运行。

有关如何解决这些问题的任何提示?

谢谢。

1 个答案:

答案 0 :(得分:0)

您使用的是PendingIntent.getService,但getActivity

<强> UPD 关于AlertDialog,您可以使用透明活动并仍然打开AlertDialog。