AlarmManager никогда не возвращается и событие для BroadcastReceiver, как отлаживать? - PullRequest
1 голос
/ 18 декабря 2011

Приведенный ниже код не выдает никаких ошибок и не работает.Когда я отлаживаю метод addInvoiceReminder (), кажется, что время устанавливается правильно, и AlarmManager настроен на отключение в ранее установленное время.Кто-то может увидеть мой недостаток?Я не уверен, почему событие onRecieve BroadcastReceiver никогда не запускается.

//---adds an invoice reminder when the user successfully adds a sales or expense invoice---
 public void addInvoiceReminder () {
    //---gets a Calendar object with current time---
     Calendar cal = Calendar.getInstance();
     //---sets the calendar object to the reminder dialog date---
     //cal.set(reminder_year, reminder_month, reminder_day);
     cal.add(Calendar.SECOND, 30);

     Intent intent = new Intent(this, DueInvoiceAlarmReceiver.class);
     intent.putExtra("reminder", "Invoice Number: 999999 is due!");         
     PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0);

     //---gets the alarm manager service set for the calendar time which is the reminder time---
     AlarmManager alarm_manager = (AlarmManager) getSystemService(ALARM_SERVICE);
     alarm_manager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);
 }

 //---Receives the event fired when the reminder date for an invoice is passed---
 public class DueInvoiceAlarmReceiver extends BroadcastReceiver {        
     @Override
     public void onReceive(Context context, Intent intent) {
       try {
         Bundle bundle = intent.getExtras();
         String message = bundle.getString("reminder");
         Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
        } catch (Exception e) {
         Toast.makeText(context, "There was an error somewhere, but we still received an alarm", Toast.LENGTH_SHORT).show();
         e.printStackTrace();        
        }
     }       
 }

Ответы [ 2 ]

1 голос
/ 18 декабря 2011

Убедитесь, что вы указали в своем манифесте приемник вещания.

0 голосов
/ 18 декабря 2011

Попробуйте Calendar cal = cal .getInstance(); cal.setTimeInMillis(System.currentTimeMillis());

Потому что вы пытаетесь получить время в миллиметрах, но никогда не устанавливаете его слишком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...