2015-08-26 4 views
0

в Основная деятельность Alarm start Вот код частный PendingIntent pendingIntent; менеджер диспетчера аварийных сообщений;Отказ Сигнал тревоги в AlarmManager onReceive

Intent alarmIntent = new Intent(this, AlarmReceiver.class); 
    pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0); 

    manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
    int interval = 10000; // 10 seconds 

    manager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(), interval, pendingIntent); 
    Toast.makeText(this, "Alarm Set", Toast.LENGTH_SHORT).show(); 

И Как отменить сигнал тревоги в AlarmReceiver.class

public class AlarmReceiver extends BroadcastReceiver { 

static DatabaseHandler dbHandler; 

private PendingIntent pendingIntent; 
private AlarmManager manager; 

    public void onReceive(Context context, Intent intent) { 
      // SHOW NOTIFICATION 
     Log.e("DAYDAY", "" + "pasok"); 
     int days = 1; 
     Toast.makeText(context, "DAYDAY", 10).show(); 
      if (days == 5) { 
       dbHandler.deleteUser(); 

        manager.cancel(pendingIntent); 
        Toast.makeText(context, "Canceled", 10).show(); 

      }else{ 
       int = days + 1; 
       dbHandler.update_days(i, emp_id, birthday); 
      } 


    } 

}

если дни равна 5, то я отменит сигнал тревоги. , но ошибка в менеджере - это пустой указатель.

ответ

0

Каждый раз, когда вы используете менеджер, вам нужно вручную вызвать:

manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
0

Вы должны получить его снова с помощью

менеджер = (AlarmManager) context.getSystemService (Context. ALARM_SERVICE);

0

Вы получаете нулевой указатель, потому что pendingIntent и 'alarm manager' не инициализированы нигде в вашем коде.

Для отмены тревоги попробовать следующий код-

Intent alarmIntent = new Intent(this, AlarmReceiver.class); 
// get pending intent by unique tag value assigned previously 
int tag = 0; 
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, tag, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

AlarmManager manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
manager.cancel(pendingIntent); 
Toast.makeText(this, "Alarm Canceled", Toast.LENGTH_SHORT).show(); 
Смежные вопросы