我正在尝试在我的应用中发出多个不同的时间闹钟。 我的应用程序从用户获取一些数据并将其存储在SQLite DB中。 当我将新数据添加到数据库时,我发送意图并设置这些警报
class MainActivity ...
public id=0;
private void addNewItem() {
String itemName = etItem.getText().toString();
String itemReturndate = dpReturndate.getDayOfMonth() + "-" + (dpReturndate.getMonth() + 1) + "-" + dpReturndate.getYear();
updateListViewData();
AlarmHelper alarm = new AlarmHelper();
Intent intent = new Intent("android.intent.action.NOTIFY");
intent.putExtra("time", itemReturndate);
intent.putExtra("name", itemName);
intent.putExtra("id",id);
id++;
alarm.SetAlarm(getApplicationContext(), intent);
}
在这里我按照这个课程来处理它
public class AlarmHelper extends BroadcastReceiver
{
int j = 0;
@Override
public void onReceive(Context context, Intent intent)
{
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
wl.acquire();
NotificationManager mNM;
Log.d("Time from notific", intent.getExtras().getString("time"));
Log.d("name from notific", intent.getExtras().getString("name"));
mNM = (NotificationManager)context.getSystemService(context.NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.ic_launcher, "Zwrot przedmiotu",System.currentTimeMillis());
PendingIntent contentIntent = PendingIntent.getActivity(context, intent.getExtras().getInt("id"), new Intent(context, MainActivity.class), 0);
notification.setLatestEventInfo(context, context.getText(R.string.alarm_service_label), intent.getExtras().getString("name") + j , contentIntent);
mNM.notify(R.string.alarm_service_label, notification);
notification.flags|= Notification.FLAG_AUTO_CANCEL;
Toast.makeText(context, "Alarm !!!!!!!!!!", Toast.LENGTH_LONG).show(); // For example
wl.release();
}
public void SetAlarm(Context context, Intent intent)
{
j++;
AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getBroadcast(context, intent.getExtras().getInt("id"), intent, 0);
Log.d("show me time", intent.getExtras().getString("time"));
intent.putExtra("intentNumber",j);
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+22000, pi);
}
因此,当我向DB中添加2个或更多内容时,我会从添加的第一个对象和最后一个对象的名称中获取警报。
警报现在我从当前时间开始设置为22秒进行测试,但是它会被改变为我从意图中恢复的“时间”
我做错了什么?为什么警报是超越时间而不是创建3种不同的警报?
感谢您的帮助
更新,更改后,我同时收到两个通知(第二个覆盖第一个,但同时启动两个日志)。 时间仍被最后一次覆盖。