2011-12-17 2 views
1

Код, указанный ниже, не вызывает ошибок и не работает. Когда я отлаживаю метод addInvoiceReminder(), он показывает, что время настраивается правильно, и AlarmManager настроен на выключение в установленное ранее время. Может ли кто-нибудь увидеть мою ошибку? Я не уверен, почему событие onRecieve BroadcastReceiver никогда не срабатывает.AlarmManager никогда не возвращается и событие для 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();   
     } 
    }  
} 
+0

Что не работает? –

+0

OnReceive BroadcastReceiver никогда не срабатывает, я установил точку отладки в DueInvoiceAlarmReceiver, и она никогда не срабатывает. – AutoM8R

ответ

1

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

+0

Спасибо, но было объявлено. Извините, забыл упомянуть об этом. – AutoM8R

0

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

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

+0

Хм, нет, потому что когда я отлаживаю, я вижу, что время установлено в миллисекундах, это достигается с помощью «cal.getTimeInMillis()», как вы можете видеть это в последней строке addInvoiceReminder(). – AutoM8R

+0

Но спасибо в любом случае, все еще тупик на этом ... – AutoM8R

+0

да я тоже в тупик. Удачи – domshyra

Смежные вопросы