2016-07-04 2 views
0

Я создаю приложение для планировщика исследований для Android, у меня есть AlarmManager, настроенный и работающий, чтобы вызвать уведомление, когда время истекает, и это работает нормально. При настройке будильника информация о тревоге сохраняется в базе данных SQLite, когда тревога выключена, мне нужно вызвать информацию о тревоге, есть ли какая-то переменная, которую я могу сохранить в базе данных и связать с конкретным сигналом тревоги, что я могу использовать его в SQLite query, чтобы найти правильную запись.Сохранять переменную с событием диспетчера аварийных сообщений

UPDATE Код ниже:

Long nIdLong = System.currentTimeMillis(); 
     String nId = nIdLong.toString(); 
Intent alarmIntent = new Intent(context, AlarmReceiver.class); 
       alarmIntent.putExtra("nID", nId); 

       PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent , 0); 

       AlarmManager alarmManager = (AlarmManager)getActivity().getSystemService(getActivity().ALARM_SERVICE); 
       alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent); 

AlarmReciever:

public void onReceive(Context context, Intent intent) 
    { 
     long dbId = intent.getLongExtra("nID", 0); 
     String notificationId = Long.toString(dbId); 
Log.i("App", "called receiver method"); 
     try{ 
Toast.makeText(context, notificationId, Toast.LENGTH_LONG).show(); 
}catch(Exception e){ 
      e.printStackTrace(); 
     } 
    } 

Заранее спасибо

ответ

0

Вы отправляете строку в соответствии с намерением, ей нужен Long, этот код должен работать.

Long nIdLong = System.currentTimeMillis(); 
     String nId = nIdLong.toString(); 
Intent alarmIntent = new Intent(context, AlarmReceiver.class); 
       alarmIntent.putExtra("nID", nIdLong); 

       PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent , 0); 

       AlarmManager alarmManager = (AlarmManager)getActivity().getSystemService(getActivity().ALARM_SERVICE); 
       alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent); 
+0

Thank вы! это отлично работало – user6548194

0

Во время установки будильника, первым получить идентификатор, который будет создан при вставке детали тревоги в SQLite через

long uniqueId = db.insert(your query); 

и положить, что в намерениях PendindIntent для AlarmManager

Intent alarmIntent = new Intent(this, AlarmEventReceiver.class); 
alarmIntent.putExtra("dbId", uniqueId); 

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent , 0); 

Внутри OnReceive() из AlarmEventReceiver, вы можете получить идентификатор & извлечения данных из БД.

@Override 
public void onReceive(Context context, Intent intent) { 
    long dbId = intent.getLongExtra("dbId", 0); 
} 
+0

Как получить значение в AlarmReveiver? – user6548194

+0

@ user6548194 Проверить обновленный ответ – sJy

+0

Я пробовал это, однако, когда установлено более одного сигнала тревоги, он только извлекает информацию из первой, которая была установлена, а не остальное – user6548194

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