设置多个警报,相互覆盖

时间:2014-09-18 13:36:24

标签: android android-intent notifications alarm

我正在尝试在我的应用中发出多个不同的时间闹钟。 我的应用程序从用户获取一些数据并将其存储在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种不同的警报?

感谢您的帮助

更新,更改后,我同时收到两个通知(第二个覆盖第一个,但同时启动两个日志)。 时间仍被最后一次覆盖。

0 个答案:

没有答案