保存变量与警报管理器事件



我正在为Android构建一个学习计划应用程序,我已经设置了AlarmManager并在时间过去时触发通知,这工作得很好。当设置报警时,报警细节保存到SQLite数据库中,当报警被设置时,我需要召回报警信息,是否有某种形式的变量我可以保存到数据库中并链接到特定的报警,以便我可以在SQLite query中使用它来找到正确的条目。

更新代码:

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();
        }
    }

Thanks in advance

你正在通过intent发送一个String,它需要一个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);

在设置告警时,首先检索将在通过

向SQLite插入告警详细信息时创建的id。
long uniqueId = db.insert(your query);

然后把它放到AlarmManager的pendinintent

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

在AlarmEventReceiver的onReceive()中,你可以获得id &从数据库中检索数据

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

最新更新