2013-09-30 68 views
0

我不知道是什么问题,我在这里看到很多解决方案,我已经做了,但没有帮助。这是我的代码。我在创建时传递了取消ID,并传回,取消它。我已经调试过它,并通过和收到id是相同的。请帮助我,这是我的代码。Android重复闹钟未取消

public void SetRepeatingAlarm(Context context,MyDateClass myDateClass,int reapitInterval){ 
    final int _id = (int) System.currentTimeMillis(); 
    final int minInMiliseconds = 60000; 
    AlarmManager am=(AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
    Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class); 
    Bundle extras = new Bundle(); 
    extras.putParcelable("DateObj", myDateClass);   
    extras.putBoolean("IsRepeat", true); 
    extras.putInt("CancelId", _id); 
    intent.putExtras(extras); 
    intent.setAction("RepeatAction"); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    calendar.set(myDateClass.getYear(), myDateClass.getMonth(), myDateClass.getDay(), myDateClass.getHour(), myDateClass.getMin(), 0); 
    PendingIntent pi = PendingIntent.getBroadcast(context, _id, intent, PendingIntent.FLAG_UPDATE_CURRENT);  
    am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), minInMiliseconds * reapitInterval , pi); 
} 

public void CancelAlarm(Context context, int id){ 
    Intent intent = new Intent(context, AlarmManagerBroadcastReceiver.class); 
    Bundle extras = new Bundle(); 
    extras.putParcelable("DateObj", null);   
    extras.putBoolean("IsRepeat", true); 
    extras.putInt("CancelId", id); 
    intent.putExtras(extras); 
    intent.setAction("BeforeAction"); 
    PendingIntent sender = PendingIntent.getBroadcast(context, id, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
    sender.cancel(); 
    alarmManager.cancel(sender); 
} 

回答

1

你的意图不匹配,所以你的报警不会被取消。在CancelAlarm,改变

intent.setAction("BeforeAction"); 

intent.setAction("RepeatAction"); 

This会解释为什么。

+0

可以告诉我什么时候设置setRepeating Alarm,我怎么能在onReceive方法中调用onReceive方法多少次? –

+0

你需要跟踪你的代码; afaik,Android的闹钟管理器不会为您保存统计数据。 – 323go